2016-07-18 19 views
1

Mit der Package Manager-Konsole auslösen ich innerhalb, wie die Update-Datenbank auf einem DbContext in einer referenzierten Assembly (NuGet Paket)

Update-Database -ProjectName: My.Project.Data 

Der Befehl löst Migrationen auf MyDbContext definierten einen Befehl ähnlich den folgenden ausführen kann Das Projekt My.Project.Data befindet sich in der derzeit offenen Lösung. Gut. Das Projekt My.Project.Data befindet sich in der gleichen Lösung mit Projekt My.Project.Mvc. Das Problem ist, My.Project.Mvc verwendet zwei Db-Kontexte. Eine, die wir bereits abgedeckt haben und eine andere, die innerhalb des Projekts Core.Project.Data definiert wurde - diese ist als ein NuGet-Paket aufgebaut, das dann von My.Project.Mvc referenziert wird. Das folgende Diagramm sollte deutlich machen:

MySolution 
├┬ My.Project.Mvc 
│├─ references: My.Project.Data (in the same solution) 
│└─ references: Core.Project.Data (NuGet) 
└─ My.Project.Data [MyDbContext] 

CoreSolution 
└─ Core.Project.Data [CoreDbContext] 

Die Frage ist, wie kann ich die Migrationen für die CoreDbContext aus der Package Manager-Konsole von MySolution auslösen. Wenn ich versuche, Update-Database -ProjectName: Core.Project.Data zu laufen ich den Fehler:

Get-Project : Project 'Core.Project.Data' is not found. 

Update: die migrate.exe verwenden stattdessen ist keine Option.

+0

Könnte ein Problem mit Ihrem Nuget Paket sein? https://github.com/NuGet/NuGetGallery/issues/2884 –

+0

@SteveGreene, thx für den Link. Jedoch habe ich versucht, den PC neu zu starten, säubere die Lösung, baue die Lösung neu auf ... nichts davon half – Anton

Antwort

1

Vom document Update-Datenbank nicht dll unterstützt.

Sie können das EF-Migrationstool über die Befehlszeile ausführen oder es im VS-Menü zur Vereinfachung hinzufügen.

migrate.exe Core.Project.Data.dll /startupConfigurationFile=Core.Project.Data.dll.config 

oder /startupConfigurationFile zu /connectionString=your-connection-string ändern

+0

Danke, es ist ein guter Punkt (+1), aber ich bin mir der migrate.exe bewusst und ich suchte nach einem Weg, wie man es vermeiden kann. Update-Datenbank ist viel bequemer. – Anton

0

Wenn Migrationen zuerst von Enable-Migration aktiviert werden, wird dem Projekt eine Configuration.cs Datei hinzugefügt. Wenn diese Datei für Core.Project.Data vorhanden ist, teilen Entity Framework diese Konfiguration verwendet werden:

Update-Database -ConfigurationTypeName Core.Project.Data.Migrations.Configuration -ProjectName Core.Project.Data 
+0

Ich nehme an, du meintest die Option 'ConfigurationTypeName' (nicht' Konfiguration'), richtig? Leider hilft es auch nicht, da der Befehl versucht, den gegebenen Typ in der aktuellen Assembly zu finden ... – Anton

+0

Auch wenn man es mit '-ProjektName' kombiniert, um auf die andere Assembly zu zeigen? Ich habe meine Antwort bearbeitet ... –

+0

Ja, natürlich habe ich schon versucht, den '-ProjectName' anzugeben, aber in diesem Fall stoße ich auf die in meiner Frage beschriebene Fehlermeldung. Die Angabe von '-KonfigurationsTypName' ist in Ordnung, aber zuerst müssen Sie das Projekt lokalisieren können. Und das ist der Befehl Update-Database bei. – Anton