web-dev-qa-db-fra.com

Connexion à SQL Server avec Visual Studio Express Editions

Je trouve étrange que dans l'édition Visual C # 2008 Express, lorsque vous utilisez l'explorateur de base de données, vos options soient:

  1. Microsoft Access
  2. SQL Server Compact 3.5 et
  3. Fichier de base de données SQL Server.

MAIS si vous utilisez Visual Web Developer 2008 Express, vous pouvez vous connecter à un serveur SQL Server standard, Oracle, ODBC, etc.

Pour les personnes qui développent une ligne de commande ou d'autres applications C # qui ont besoin de parler à une base de données SQL Server, avez-vous vraiment besoin de créer votre code LINQ/Data Access avec un IDE (Visual Web Developer) et votre programme dans un autre (Visual C #)?

Ce n'est pas une solution de contournement difficile, mais cela semble bizarre. Si Microsoft voulait vous forcer à mettre à niveau vers Visual Studio pour vous connecter à SQL Server, pourquoi incluraient-ils cette fonctionnalité dans l'un de leurs IDE gratuits mais pas dans l'autre? Je sens que je pourrais manquer quelque chose (comme comment tout faire dans Visual C #).

49
Tom Lianza

Vous devriez pouvoir choisir l'option de fichier de base de données SQL Server pour obtenir le bon type de base de données (le system.data.SqlClient provider), puis corrigez manuellement la chaîne de connexion pour pointer vers votre base de données.

Je pense que le raisonnement derrière ces choix de base de données va probablement quelque chose comme ceci:

  • Si vous utilisez l'édition Express et que vous utilisez pas avec Visual Web Developer, vous créez probablement un programme de bureau.
  • Si vous créez un programme de bureau et que vous utilisez l'édition express, vous êtes probablement un amateur ou un uISV travaillant à la maison plutôt que de faire du développement pour une entreprise.
  • Si vous ne développez pas pour une entreprise, votre application est probablement destinée à l'utilisateur final et votre magasin de données va probablement sur sa machine locale.
  • Vous ne devriez vraiment pas déployer des bases de données classe serveur sur les bureaux des utilisateurs finaux. Un en cours db comme Sql Server Compact ou MS Access est beaucoup plus approprié.

Cependant, cette logique ne tient pas tout à fait. Même si chacun de ces 4 points est vrai 90% du temps, au moment où vous appliquez les quatre, cela ne s'applique qu'à ~ 65% de votre public, ce qui signifie que jusqu'à 35% du marché express pourrait légitimement vouloir parler à une base de données de classe serveur, et c'est un groupe important. Et donc, la version simplifiée (gourmande):

  • Un vrai serveur db (et le matériel pour le faire fonctionner) coûte de l'argent réel. Si vous y avez accès, vous devriez pouvoir vous permettre au moins l'édition standard de Visual Studio.
21
Joel Coehoorn

Solution de contournement:

  1. Ouvrez votre solution dans Visual Web Developer Express. Il ne chargera pas certains des projets dans la solution mais c'est correct.
  2. Établissez une nouvelle connexion dans l'Explorateur de bases de données à la base de données requise à partir de SQL Server.
  3. Ajoutez un nouveau projet de bibliothèque de classes.
  4. Ajoutez un élément LINQ to SQL Classes et liez-le à votre base de données.
  5. Fermez la solution.
  6. Ouvrez la solution dans Visual C # Express.

Vous disposez maintenant d'une bibliothèque de classes LINQ to SQL qui est liée à votre base de données SQL Server dans Visual C # Express.

Mise à jour

La solution est pour Visual Studio Express 2010.

21
Sergey Shandar

La seule façon de faire fonctionner C # Express 2008 était de déplacer le fichier de base de données. J'ai donc ouvert SQL Server Management Studio et après avoir supprimé la base de données, j'ai copié le fichier dans mon dossier de projet. Ensuite, j'ai réattaché la base de données au studio de gestion. Maintenant, lorsque j'essaie de joindre à la copie locale, cela fonctionne. Apparemment, vous ne pouvez pas utiliser le même fichier de base de données plus d'une fois.

2
Z.K.

Je suppose qu'avec VWD, vos solutions sont plus susceptibles d'être déployées sur des serveurs tiers, dont beaucoup ne permettent pas un fichier de base de données SQL Server attaché dynamiquement. D'où l'autorisation de l'autre type de connexion.

Cette différence de comportement IDE est l'une des principales raisons de la mise à niveau vers une version complète.

2
Mitchel Sellers

Il se trouve que j'ai commencé mon application d'entreprise à domicile sous Windows pour la commodité. J'utilise actuellement Visual C # Express 2010/SQL Server 2008 R2 Express pour le développer. J'ai eu le même problème que OP où je dois me connecter à une instance de SQL Server. Je saute des détails ici, mais cette base de données sera une base de données fusionnée synchronisée entre 2-3 ordinateurs qui utilisera également l'application que je développe en ce moment.

J'ai trouvé une solution rapide, du moins, je pense que je l'ai fait parce que je suis maintenant en mesure d'utiliser mes procédures stockées dans les adaptateurs de table sans aucun problème jusqu'à présent.

J'ai copié collé une connexion SQL que j'ai utilisée dans un autre projet au travail (VS2010 Premium) dans app.config et j'ai changé tout ce dont j'avais besoin. Quand je suis retourné à mes Settings.settings, je devais juste confirmer que je voulais ce qui était à l'intérieur du fichier app.config. Le seul inconvénient que je peux voir est que vous ne pouvez pas "tester" la connexion car lorsque vous allez dans la configuration de la chaîne de connexion, vous ne pouvez aller nulle part car "SQL Server" n'est pas une option. L'autre inconvénient est que vous devez tout saisir manuellement car vous ne pouvez utiliser aucun assistant pour le faire fonctionner.

Je ne sais pas si j'aurais dû le faire de cette façon mais au moins je peux me connecter à mon serveur SQL maintenant :).

MODIFIER:

Il ne fonctionne qu'avec les instances SQL Server 2008 R2 Express. Si vous essayez avec SQL Server 2008 R2 Workgroup et plus, vous obtiendrez un avertissement désagréable de Visual C # 2010 Express vous indiquant que "vous ne pouvez pas utiliser cette connexion avec la version actuelle de Visual Studio". J'ai compris cela lorsque j'essayais de modifier certains de mes adaptateurs de table. Je suis revenu à une instance SQL Express pour développer et cela fonctionne à nouveau correctement.

2
Tribalinius

Si vous l'utilisez pour obtenir un LINQ to SQL que je fais et que je voulais pour mon développeur visuel, 1) obtenez le développeur Visual WEB gratuit, utilisez-le pour vous connecter à l'instance SQL Server, créez votre interface LINQ, puis copiez les fichiers générés dans votre projet Vis-Dev (je n'utilise pas VD car ça a l'air drôle). N'incluez que les fichiers * .dbml. L'environnement Vis-Dev prendra une seconde ou deux pour reconnaître les fichiers de prise en charge. C'est une petite étape supplémentaire mais certainement mieux que de le faire à la main ou de l'abandonner complètement ou MÊME PIRE, en le payant. Mooo ha ha haha.

2
user188143