web-dev-qa-db-fra.com

Aucun type de contexte n'a été trouvé dans l'assembly

J'utilise .NET 4.0, MVC3 et EF5 avec le code en premier.

Ma solution est divisée en trois projets, avec les dépendances comme indiqué:

Project.Web -> Project.BLL -> Project.DAL

La couche Project.DAL contient ma classe de contexte de données de structure d'entité et toutes mes entités, mais mon projet de démarrage est Project.Web, il contient donc mon Web.config, les chaînes de connexion et la base de données compacte SQL réelle.

J'essaie d'activer les migrations pour pouvoir ajouter une nouvelle table à mon modèle EF sans effacer les données existantes. Cependant, lorsque j'exécute "Enable-Migrations", j'obtiens

No context type was found in the Assembly 'Project.Web'.

Si je définis le projet de démarrage en tant que Project.DAL, l'erreur se transforme en

Could not load Assembly 'Project.Web'. (If you are using Code First Migrations inside Visual Studio this can happen if the startUp project for your solution does not reference the project that contains your migrations. You can either change the startUp project for your solution or use the -StartUpProjectName parameter.)

Est-ce que quelqu'un sait pourquoi cette erreur est provoquée ou ce que je peux faire pour la corriger?

33
Cavyn VonDeylen

J'ai finalement trouvé la réponse dans this question. Fondamentalement, dans la console du gestionnaire de packages, il y a une liste déroulante "Projet par défaut". Vous devez définir cela sur le projet qui contient votre contexte EF.

83
Cavyn VonDeylen

J'ai trouvé un article similaire: Activer les migrations avec le contexte dans un assemblage séparé?

Exemple:

enable-migrations -ContextProjectName MyProject.DBContexts -contexttypename MyProject.DBContexts.MyContextName -Verbose
3
d.danailov

Pour qui a fait cette erreur comme moi:

Votre classe de contexte doit hériter de DbContext, comme ça:

public class DirectorRequestContext : DbContext
{
    public DbSet<DirectorRequest> DirectorRequests { get; set; }
}
1
Jacob

Se produit également si, pour une raison quelconque, votre classe avec la connexion n'est pas dans le projet. Donc, faites un clic droit et "ajouter au projet" trie cela.

0
Richard Housham