9

Ich habe eine MVC 3.0-Anwendung mit Visual Studio 2012, .NET 4.5 und Entity Framework 5.0 erstellt.Entity Framework-Code Erste Datenmigrationen funktionieren nicht mit VS2012 Web Deploy

Mithilfe von Code First Data Migration kann ich Modelländerungen korrekt an meine lokale Testdatenbank weitergeben, aber ich kann nicht herausfinden, wie dies bei der Bereitstellung auf meinen Staging- und Produktionsservern mit Web Deploy funktioniert.

ich folgende Artikel gelesen haben ...

http://msdn.microsoft.com/en-us/library/dd394698(v=vs.110)#dbdacfx

... was erklärt, was passieren soll, aber es funktioniert nicht für mich, da Web Deploy nicht in der Lage scheint zu erkennen, dass ich verwende Entitätsrahmen Das Tutorial zeigt eine Checkbox Ausführung von Code erster Migrations ... ermöglichen

Web Deploy Publish Dialog

... aber mein Dialog zeigt die einzige Update Database Checkbox für jede Datenbank.

Ich habe gelesen, dass die Web.config ein Element enthalten muss, um es zu definieren, damit Visual Studio die Verwendung eines Entity Framework-Kontext erkennt. Hier ist meins:

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 

    <contexts> 
     <context type="MyContext, MyAssembly"> 
      <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[MyContext, MyAssembly], [MyConfig, MyAssembly]], EntityFramework"> 
       <parameters> 
        <parameter value="MyConnectionStringName"/> 
       </parameters> 
      </databaseInitializer> 
     </context> 
    </contexts> 
</entityFramework> 

Alle Vorschläge würden sehr geschätzt werden.

Danke,

Tim

Antwort

3

Ich habe die Lösung für dieses Problem durch Experimente entdeckt.

In der Tat wurde meine MVC-Anwendung von VS2012 durch Konvertierung von einer VS2010-Lösung erstellt. Da der Konvertierungsprozess keine Probleme gemeldet hat, ging ich davon aus, dass alles korrekt konvertiert wurde, einschließlich der Veröffentlichungsprofile.

Ich stellte jedoch fest, dass das Problem in der Konvertierung dieser Profile lag. Wenn ich ihre XML-Dateien nicht manuell bearbeite, gibt es offensichtlich keine Möglichkeit, alte importierte Profile an Code First Migrations zu beteiligen.

Durch einfaches Erstellen neuer Veröffentlichungsprofile in der konvertierten Lösung wird das erwartete Verhalten erzielt.

+1

Möchten Sie uns einen Überblick über die Unterschiede geben? –

+1

@Richard: Innerhalb von enthält das neu erstellte Profil eine Reihe zusätzlicher Elemente, von denen jedes eine Kontextklasse darstellt. Ich gehe davon aus, dass bei der ersten Ausführung von Web Deploy eine Art von Erkennungsprozess ausgeführt wird, der nicht als Teil der VS2012-Lösungskonvertierung ausgeführt wird. –

0

Try this: Enable-Migrations -Force

die folgenden Stellen Sie sicher, auf true AutomaticMigrationsEnabled = true gesetzt ist;

Republish - für mich gearbeitet

Verwandte Themen