Ich habe kürzlich ein WFC-Projekt aktualisiert, das Entity Framework von Version 4.3.1 bis 5.0 verwendet.
Ich führe nur codierte Migrationen durch (keine automatischen Migrationen).
Bisher habe ich die Veröffentlichungsprofile verwendet, um diese Lösung bereitzustellen und die Migrationen anzuwenden. Seit dem Upgrade des Projekts auf EF5 funktioniert der Migrationsabschnitt nicht mehr und der Veröffentlichungsdialog erkennt den Kontext nicht als Code-first-Migrationen.
Insbesondere wurde die .pubxml
-Datei von der Erkennung meines Kontexts als <Object Type="DbCodeFirst">
auf <Object type="DbDacFx">
geändert, was für meinen Kontext nicht korrekt ist.
Als Umgehungsmöglichkeit habe ich die webcounter.config-Transformationen manuell um die% code_d% -Datenbank-Initialisierungskonfiguration erweitert, aber ich würde gerne verstehen, warum die Veröffentlichungsprofile nicht funktionieren. Das war eine viel bessere Lösung.
Es ist mir einmal passiert, als ich das Commit eines anderen Entwicklers fusionierte und das Visual Studio-Projekt neu lud. Das hat dazu geführt, dass sich "DbCodeFirst" auf "DbDacFx" geändert hat.
Wenn ich Visual Studio neu starte, geht alles zurück zu dem, was es sein sollte.
Nur ein weiterer Gedanke.
Vermutlich haben Sie es versäumt, den Verweis auf EntityFramework in Ihr Projekt aufzunehmen. Wenn Sie nur die Referenz hinzufügen, sollten Sie steuern können, ob die Option DbCodeFirst verfügbar ist oder nicht.
Als schlägt dieser Beitrag vor, versuchen Sie, den voll qualifizierten Namen Ihres DbContext als den Namen der Verbindungszeichenfolge zu verwenden. Statt:
Web.config
<connectionStrings>
<add name="MyContext" .../>
</connectionStrings>
Verwenden:
Web.config
<connectionStrings>
<add name="MyNamespace.AnotherNamespace.MyContext" .../>
</connectionStrings>
In meinem Fall musste ich, um meine vorhandenen Veröffentlichungsprofile (.pubxml) zu verwenden, auch <ObjectGroup Name="..." ...>
manuell bearbeiten. Wahrscheinlich würde das Wiederherstellen der Veröffentlichungsprofile auch funktionieren.
Ich hatte das gleiche Problem, aber nicht im selben Kontext.
Ich habe Code First Migrations mit bestehender ASP.NET MVC 5.2.3-Anwendung unter Verwendung von EF 6.1.3 einen Monat lang ohne Probleme verwendet. Zu einem bestimmten Zeitpunkt habe ich die Unterstützung für Windows Azure Storage hinzugefügt, aber ich habe einige Fehler gemacht:
Install-Package WindowsAzure.Storage
verwendet, aber ich habe es im MVC-Projekt und nicht in der Klassenbibliothek installiert. Ich habe versucht, es zu beheben, indem ich Uninstall-Package
für das MVC-Projekt mache und es im richtigen Projekt installiere <connectionStrings>
element in web.config und eine Umwandlung in web.release.config Ich nehme an, mein Projekt war jetzt in einem inkonsistenten Zustand. Ich habe bemerkt, dass Code-Migrationen vergessen werden (ich habe die Änderungen an der .pubxml-Datei überwacht):
Am Ende habe ich es repariert, indem ich diese Bibliothek von Grund auf als Klassenbibliothek neu erstellt habe (wegen Beobachtung 1). Ich habe auch die Klasse WorkOrderRepository genannt (wegen Beobachtung 2).