Publish Web-Dialog erkennt meinen Entity Framework 5 Kontext nicht als Code First

8

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.

    
Josh 20.09.2012, 14:00
quelle

4 Antworten

2

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.

    
Xinan 12.03.2016 08:02
quelle
0

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.

    
nutscracker 11.01.2013 06:52
quelle
0

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.

    
Carl G 17.05.2013 18:19
quelle
0

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:

  • Ich habe ein neues Projekt hinzugefügt. Leider habe ich "Konsolenanwendung" statt "Klassenbibliothek" gewählt. Ich habe versucht, es zu beheben, indem ich es in "Klassenbibliothek" in "Projekteinstellungen"
  • zurück änderte
  • Ich habe Nuget für 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
  • Ich habe die Klasse in der Klassenbibliothek "WorkOrderStorage"
  • aufgerufen
  • Ich habe den connectionString zu <connectionStrings> element in web.config und eine Umwandlung in web.release.config
  • hinzugefügt

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

  1. wenn ich einen Verweis zwischen dem MVC-Projekt und der Bibliothek anlege enthält die WorkOrderStorage-Klasse
  2. wenn ich eine leere 'WorkOrderStorage' Klasse in einer der vorhandenen Bibliotheken erstellt habe

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

    
Bart Jolling 13.09.2015 20:43
quelle