Entity Framework 7 (EF7) Migrationen. Die DbContext-und StartUp-Projekt sind in verschiedenen Baugruppen
Ich versuche, Migrationen in EF7 mit Entity Framework.Befehle. Aber meine DbContext ist in verschiedenen Montage mit Start-up-Projekt (asp.net mvc ist ein start-up-Projekt und Kern.Die Umsetzung hat eine DbContex).
dnx . ef-migration hinzufügen MyMigration -c MyContext
System.InvalidOperationException: Keine DbContext namens "MyContext' gefunden wurde.
Ich habe versucht, zu verwenden namespace verweisen auf andere Montage, aber es hat nicht funktioniert. Ist es überhaupt möglich? Oder ich habe nur zu meinem Kontext, in Montage, wo ef7 Befehl ist?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Pro Probleme #639, #2256, #2293, #2294, #2357, #2553 & #2748, wir haben ein wenig Arbeit zu tun in diesem Bereich. 🙂
MyContext
Projekt bei der Ausführung des ef-Befehl wäre nett 🙂BEARBEITEN
Seit 1.0.0-rc1-final (vielleicht früher) dieses workaroud ist unnötig
App.DataAccess/Startup.cs
(nur löschen, wenn Sie die Problemumgehung unten)App.Web
)-p
Parameter) mit Migrationen:Wenn Sie mehrere Datenbank-Kontexten müssen Sie auch angeben, welche zu verwenden (
-c
parameter)ENDE BEARBEITEN
Ich fand eine Abhilfe für dieses
Angenommen, Sie haben 2 Projekte:
App.Web
undApp.DataAccess
Können Sie eine sehr einfache Start-Klasse zu Ihrem
App.DataAccess
:Die einfache Inbetriebnahme-Klasse (
App.DataAccess\Startup.cs
):Als Ihr Projekt ändern.json-in-App.DataAccess (
App.DataAccess/project.json
):Tha alles, was Sie tun müssen, ist zu gehen, um
App.DataAccess
und verwendendnx ef
:dotnet ef migrations add migrationName -c ApplicationDbContext
. Kann es einen besseren Weg, aber wie ich schon sagte, ich habe nicht viel Zeit, um es zu erkunden.Für ASP.NET Core 1.0 und EF-Core 1.0
Nehmen wir an, wir wollen um unseren Kontext zu
Core1RtmEmptyTest.DataLayer
Projekt.Zunächst die EF-tools für das sub-Projekt, indem Sie die
project.json
Datei:Dann führen Sie den Befehl aus dem Stammverzeichnis dieses Projektes (und nicht von der Wurzel des main-Projekt)
Hier sollten wir angeben, die
startup-project
zu.Und schließlich um die Datenbank zu aktualisieren
Habe ich ein workaround, aber ich bin mit EFCore 1.0.0, so müssen Sie migrieren. Unten die codesnippets, die Sie brauchen, um es zu arbeiten:
Die Idee ist eine zentrale datacontext:
MigrationsDataContext
zu handhaben gesamte Datenbank-Migrationen. So können Sie Ort, diese migration in einem separaten Projekt gewidmet nur für die Migration der Datenbank. Sie müssen nur machenMigrationsDataContext
siehe andere Projekte mit erforderlichen datacontexts. Auf diese Weise können Sie instanziieren jeweils anderen datacontext-und call -OnModelCreating
Methode manuell übergeben aktuelle DbContext istModelBuilder
als parameter.Damit Erhalten alle DbContextOptions von constructor, Sie meed, um zu registrieren, das ganze Bündel von
DbContextOptions<T>
alsDbContextOptions
dies wird erreicht durch Aufruf der folgenden Methode inConfigureServices
imStartup.cs
:Startup.cs
Das ist alles. Jetzt verwalten Sie Migrationen auf diese Weise:
bewegen Sie Migrationen Projekt, neben MyWebApp Projekt,
Hoffe, dass dies helfen.