33

Ich verwende .NET 4.0, MVC3 und EF5 mit Code zuerst.In der Assembly wurde kein Kontexttyp gefunden

Meine Lösung ist in drei Projekte aufgeteilt, mit den Abhängigkeiten wie angegeben:

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

Die Project.DAL Schicht enthält mein Entity Framework Daten Kontextklasse und alle meine Entitäten, aber mein Startprojekt ist Project.Web, also enthält es meine Web.config, Verbindungszeichenfolgen und die eigentliche SQL-Kompaktdatenbank.

Ich versuche, Migrationen zu aktivieren, damit ich meinem EF-Modell eine neue Tabelle hinzufügen kann, ohne die vorhandenen Daten zu löschen. Allerdings, wenn ich „Enable-Migrationen“ laufen, bekomme ich

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

Wenn ich das Startprojekt als Project.DAL gesetzt, die Fehler Änderungen

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.) 

Weiß jemand, warum dieser Fehler zu sein, ist verursacht oder was kann ich tun, um es zu beheben?

Antwort

82

Ich fand schließlich die Antwort in this Frage. Im Grunde gibt es in der Package Manager Console ein Dropdown-Menü "Standardprojekt". Sie müssen dies auf das Projekt setzen, das Ihren EF-Kontext enthält.

+10

Seien Sie sicher, dass Ihr Paket-Manager-Konsole Fenster vergrößern, oder es könnte sein, auf der rechten Seite der Symbolleiste des Fensters, und Sie werden es vermissen, wie ich es tat. – Steve

+0

Gibt es eine Möglichkeit, dies irgendwo in einer Konfiguration einzurichten? Ich versuche, automatische Migrationen einzurichten, wenn ich in Azure publiziere, aber es scheint zu scheitern, weil es den Befehl update-database im Startprojekt anstelle von DAL – amhed

+1

ausführt. Danke. Scheint so offensichtlich jetzt :) – JMG

0

geschieht auch, wenn aus irgendeinem Grunde Ihre Klasse mit der Verbindung nicht in dem Projekt ist. Klicken Sie also mit der rechten Maustaste und "zum Projekt hinzufügen" sortiert das aus.

1

Für wen, die diesen Fehler gemacht wie ich es tat:

Ihre Kontextklasse von DbContext erbt muss, einfach so:

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