10

Ich verwende Web Deploy, um eine MVC4-Anwendung zuerst mit EF5-Code zu implementieren. Ich habe ein Veröffentlichungsprofil mit dem Namen "Entwicklung" erstellt, das die Webbereitstellung für Anwendung und Datenbank verwendet, indem ich das Kontrollkästchen "Erste Codemigrationen ausführen" verwende, um Migrationen beim Anwendungsstart auszuführen. Das Verlagswesen hat eine Weile gut funktioniert. Irgendwann habe ich ein neues Veröffentlichungsprofil mit dem Namen "test" hinzugefügt, um es auf einem anderen Server bereitzustellen, der die ftp-Methode der Bereitstellung und keine automatischen Migrationen verwendet. Das funktioniert auch gut. Als ich jedoch versuchte, mein altes "Entwicklung" - Veröffentlichungsprofil erneut zu verwenden, änderte VS die Einstellungen automatisch in den dbDacFx - Weg (Kontrollkästchen 'Datenbank aktualisieren' statt 'Code - Erstmigrationen ausführen') und ich kann es nicht wieder an den wie es war. Es gab einige andere Änderungen am Projekt, während das 'Test'-Profil verwendet wurde, aber nichts, was mir so erscheint, könnte dies verursachen. Weiß jemand, warum VS denkt, dass mein Projekt den Code nicht mehr benutzt?Das Kontrollkästchen Code der ersten Migration ausführen wurde aus meinem Veröffentlichungsprofil entfernt.

Antwort

4

Hier ist das richtige answer - ist das Problem für mich gelöst. Benennen Sie Ihre Verbindungszeichenfolge genau wie Ihren DbContext, z.

 public ApplicationDbContext() 
     : base("Vocabulary.Domain.ApplicationDbContext", throwIfV1Schema: false) 
    { 
    } 

Beachten Sie, dass Namen Namensraum wie "Vocabulary.Domain.ApplicationDbContext" enthalten sollte. Vergessen Sie nicht .pubxml Dateien zu aktualisieren:

<ObjectGroup Name="Vocabulary.Domain.ApplicationDbContext" Order="1" Enabled="True"> 

Diese article beschreibt, wenn veröffentlichen Dialog hat oder nicht die Zecke „Execute-Code Erste Migrationen (läuft auf Anwendungsstart)“

8

Seit ich diese Frage gestellt habe, habe ich dieses Problem mehrmals in mehreren Versionen von MVC und EF (aller Code zuerst von cource). Speichern Sie die Änderungen nicht in Ihrem Veröffentlichungsprofil, vergewissern Sie sich, dass Sie sich in der Buildkonfiguration "Debug" befinden, die Lösung bereinigen und die Lösung neu erstellen. Wenn das alles fehlschlägt, starten Sie Visual Studio neu und versuchen Sie es erneut. Bis jetzt hat das immer das Problem für mich gelöst.

+2

Ja, es ist mir auch mehrmals passiert. Und jetzt (nach dem Upgrade auf VS2013), egal wie oft ich VS neu starte, wird "Code-First Migrations ausführen" nicht angezeigt. –

+0

nach dem Lernen fast alles über Datenbankbenutzer, arbeitete ein Visual Studio Neustart für, ich versuchte fast, mich selbst zu töten, weil –

+0

, wenn Sie mit @rafael Problem stecken als versuchen, die Veröffentlichung zu löschen und wieder für mich arbeitete –

1

Das ist mir in VS2013 passiert. Weder das Reinigen der Lösung noch das Neustarten funktionierten. Ich habe versucht, Migrationen zu "reaktivieren" und es hat funktioniert. Obwohl ich eine Fehlermeldung erhalten habe, dass Migrationen bereits im Projekt aktiviert wurden, wurde das Kontrollkästchen "Erste Code-Migrationen ausführen" erneut angezeigt.

+1

Wie "re-enable" Sie Migrationen? – abalter

+1

@abalter nur 'enable-migrations' wieder – gldraphael

+0

läuft enable-migrations funktioniert wieder für mich –

0

Da nichts erwähnt oben hat funktioniert.
Ich habe die publish profile von azur und es funktioniert einwandfrei das erste Mal

0

ich dieses Problem hatte und für mich hatte es eine andere Ursache zu einem ich an anderer Stelle dokumentiert gefunden habe.

Meine Anwendung ist über viele Projekte in einer Lösung verteilt. Da ich Schnittstellen und ein separates Ansichts-/Präsentationsmodell verwende, um Aufrufe an die Datenbank zu übertragen, hatte mein Front-Webprojekt keinen direkten Verweis auf das Projekt, das die DbContext-Klasse enthält. Beachten Sie, dass dies kein Problem für die lokale Ausführung der Site darstellt. Ich tue dies so, dass Entwickler im Frontend-Webprojekt nicht versucht sind, die Präsentationsschicht zu umgehen und direkter in die Datenbank zu gehen.

Durch das Hinzufügen dieser Referenz wurde das Problem sofort behoben, und jetzt sehe ich das Kontrollkästchen Erste Code-Migrationen ausführen in meinem Dialogfeld "Profil veröffentlichen".

Verwandte Themen