0
votes

Première application utilisant Code First EF 6.4.4: erreur de connexion SQL Server

Je viens de commencer à apprendre EF (pas de base) et je créais ma première application code-first. Il s'agit d'une application console C # où tout ce que je fais est d'ajouter une migration, puis de créer simplement l'exemple de base de données (même nom que ma solution). Lorsque j'essaye d'exécuter Update-Database , j'obtiens cette erreur:

Une erreur liée au réseau ou spécifique à une instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou inaccessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions à distance. (fournisseur: Interfaces réseau SQL, erreur: 50 - Une erreur d'exécution de la base de données locale s'est produite. Impossible de créer une instance automatique. Consultez le journal des événements de l'application Windows pour plus de détails sur l'erreur.)

Les étapes que j'ai recherchées et mises en œuvre et que je n'ai toujours pas été en mesure de résoudre sont les suivantes:

  1. J'ai activé le port TCP / IP dans le gestionnaire de configuration SQL Server
  2. Assurez-vous que tous les services fonctionnent (navigateur, SQL Server)
  3. Ajout d'une exception dans le pare-feu Windows Defender
  4. Cochez la case pour autoriser "Connexions à distance"

Ma chaîne de connexion est:

<add name="ConsoleDBContext" 
     connectionString="Data Source=(LocalDb)\SQLEXPRESS;Initial Catalog=CodeFirst_Demo;Integrated Security=SSPI;" 
     providerName="System.Data.SqlClient" />

Également essayé de supprimer "localDB" mais en vain.

Les étapes suivies dans le code C # à l'aide de la console du gestionnaire de package sont:

  1. package d'installation EntityFramework
  2. enable-migration
  3. add-migration CreatePost
  4. base de données de mise à jour

Je serais extrêmement reconnaissant de toute aide à cet égard.


0 commentaires

3 Réponses :


0
votes

Votre serveur n'est pas accessible à votre programme. Si vous exécutez la base de données sur la même machine, votre chaîne de connexion devrait ressembler à ceci:

Data Source=.;Initial Catalog=<DB-Name>;User Id=<username>; Password=<pwd>;

La source de données est le nom du serveur, le "." signifie localhost ou 127.0.0.1 Initial Catalog est le nom de votre base de données, parfois vous pouvez utiliser master. et vous n'avez pas besoin de configurer TCP / IP sur la même machine, sauf si vous hébergez la base de données sur une autre machine, alors la source de données doit être db-machinname \ db-instance-name, encore une fois si le nom de l'instance est la valeur par défaut nom, il vous suffit de spécifier le nom de la machine.


0 commentaires

1
votes

Le nom du serveur / instance dans votre chaîne de connexion est plutôt curieux ...

Soit vous avez le SQL Server Express «complet» installé sur votre ordinateur - celui qui démarre lorsque Windows se lance et s'exécute en tant que service en arrière-plan - dans ce cas, vous devez utiliser .\SQLEXPRESS ou (local)\SQLEXPRESS comme votre nom du serveur / de l'instance:

<add name="ConsoleDBContext" 
     connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=CodeFirst_Demo;Integrated Security=SSPI;" 
     providerName="System.Data.SqlClient" />

Ou bien , lorsque SQL Server Express LocalDB est installé (qui est installé avec Visual Studio), vous devez utiliser (localdb)\MSSQLLocalDB comme nom de serveur / instance:

<add name="ConsoleDBContext" 
     connectionString="Data Source=(local)\SQLEXPRESS;Initial Catalog=CodeFirst_Demo;Integrated Security=SSPI;" 
     providerName="System.Data.SqlClient" />

La combinaison que vous utilisez actuellement n'est évidemment pas correcte - essayez l'une des deux et voyez si cela fonctionne.


0 commentaires

0
votes

Merci tout le monde! Mon problème a été résolu en entrant explicitement le nom du projet de démarrage ("CodeFirst_Demo" dans mon cas) avec la commande "Update-Database". Comme ci-dessous:

update-database -StartupProjectName CodeFirst_Demo


0 commentaires