J'ai 3 projets de classe dans mes solutions. 1. Projet MVC4 2. Domaine 3. Des tests
Dans le projet MVC4, j'ai ajouté un fichier web.config avec la chaîne de connexion comme
<add name="EfDbContext" connectionString="Data Source=.;Initial Catalog=SportsStore;Integrated Security=true;" providerName="System.Data.SqlClient"/>
J'ai une classe nommée EfDbContext dans le projet de domaine qui hérite de DbContext.
Lorsque je consulte le site Web dans un navigateur, le serveur non trouvé est erroné.
J'ai débogué la classe EfDbContext et constaté que Database.Connection.ConnectionString Est défini sur\SqlExpress avec la base de données EfDbContext.
Pourquoi donc?
Enfin, j'ai réalisé que j'avais ajouté l'entrée de connexion dans le fichier web.config créé par VS dans le dossier Views.
Ma faute.
Vous devez avoir votre chaîne de connexion en tant qu'espace de nom complet dans votre contexte lorsque votre classe de contexte est dans un projet différent.
Par exemple:
<add name = "YourClassProject.EfDbContext" connectionString = "Source de données = .; Catalogue initial = SportsStore; Integrated Security = true;" providerName = "System.Data.SqlClient" />
Vous devez créer votre DbContext avec votre nom de chaîne de connexion transmis au constructeur
public class UnicornsContext : DbContext
{
public UnicornsContext()
: base("EfDbContext")
{
}
}