2017-05-08 2 views
1

Je travaille sur un projet dans lequel j'utilise Entity Framework avec les premières migrations de code pour mettre à jour ma base de données. J'ai commencé ce projet sur une autre machine et ça a très bien marché. Maintenant, j'ai vérifié le code sur une autre machine. Comme cette machine ne possède pas la base de données, j'ai exécuté la commande update-database dans nuget. Il doit appliquer mes migrations précédentes et créer une nouvelle base de données sur cette machine mais elle affiche l'erreur suivante.Entity Framework: Impossible de modifier DataSource pour les premières migrations de code

error

Je lis this MSDN article qui dit

Si une instance locale SQL Express est disponible (installé par défaut avec Visual Studio 2010) puis premier code a créé la base de données sur cette instance Si SQL Express n'est pas disponible, le Code Premier essaiera d'utiliser LocalDb (installé par défaut avec Visual Studio 2012)

Par exemple, lorsque j'ai activé les migrations dans ma première machine, il a créé la base de données avec l'instance SQLEXPRESS comme DataSource et comme je ne l'ai pas dans ma machine actuelle, il est incapable de créer la base de données. Donc j'essaye de changer le DataSource de EntityFramework à l'Instance de mon serveur sql actuel qui est LAPTOP-HD618J49. Pour cela, j'ai essayé d'écrire une chaîne de connexion codée en dur avec cette instance dans app.config, j'ai changé ContextName dans la classe Data Context mais en vain. S'il vous plaît donnez-moi quelques indications sur ce que je pourrais manquer?

+0

Je vous suggère de spécifier un nom de chaîne de connexion dans le constructeur de votre contexte comme décrit [ici] (http://www.entityframeworktutorial.net/code-first/database-initialization-in-code-first.aspx) . Ensuite, ajoutez cette chaîne de connexion à votre fichier de configuration. Ne devrait pas être nécessaire de changer le nom du contexte. –

+0

@SteveGreene j'ai essayé aussi. Toujours la même erreur. –

+0

La première chose à faire est d'utiliser l'explorateur d'objets SQL Server dans VS (ou SQL Management Studio) pour vous connecter à la base de données souhaitée et vous assurer d'avoir accès (vous n'aurez pas accès à la base de données distante par défaut). Deuxièmement, votre message d'erreur fait-il toujours référence à '. \ SQLEXPRESS'? Cela indique qu'il n'utilise pas votre chaîne de connexion pour LAPTOP-HD618J49. –

Répondre

0

J'ai finalement résolu le problème. Auparavant, j'ai essayé d'utiliser base("name=ConnectionStringNameHere") mais cela n'a pas fonctionné lorsque j'ai exécuté la commande update-database dans la console du gestionnaire de paquets. La raison étrange est que Visual Studio ne sait pas quel app.config vérifier pour ConnectionStringName. Bien que j'avais déjà sélectionné le module avec framework d'entité dans la liste déroulante de la console du gestionnaire de paquets. J'ai dû sélectionner le module avec le framework d'entité dans la fenêtre de l'explorateur de solution et le définir comme projet de démarrage. Cela a résolu le problème et il a été en mesure de choisir ConnectionStringName de app.config du module avec le DataSource mis à jour.