9

Ho creato un'applicazione MVC 3.0 utilizzando Visual Studio 2012, .NET 4.5 e Entity Framework 5.0.Entity Framework Code Prime migrazioni di dati non funzionanti con VS2012 Web Deploy

Utilizzo del codice Prime migrazioni di dati, sono in grado di propagare correttamente le modifiche del modello al mio database di test locale, ma non riesco a capire come farlo funzionare quando si esegue la distribuzione sui server di produzione e staging utilizzando Web Deploy.

Ho letto il seguente articolo ...

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

... il che spiega quello che dovrebbe succedere, ma non funziona per me, come Web Deploy non sembra in grado di rilevare che sto usando Entity Framework. Il tutorial mostra una casella di controllo per consentire l'esecuzione di codice prime migrazioni ...

Web Deploy Publish Dialog

... ma la mia finestra di dialogo mostra l'unico Update Database casella di controllo per ogni database.

Ho letto che, per consentire a Visual Studio di rilevare l'utilizzo di un contesto Entity Framework, lo Web.config deve includere un elemento che lo definisce. Ecco il mio:

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

Qualsiasi suggerimento sarebbe molto apprezzato.

Grazie,

Tim

risposta

3

ho scoperto la soluzione a questo problema attraverso la sperimentazione.

Infatti, la mia applicazione MVC è stata creata da VS2012 convertendo da una soluzione VS2010. Poiché il processo di conversione non ha segnalato alcun problema, ho presupposto che avesse correttamente convertito tutto, inclusi i profili di pubblicazione.

Tuttavia, ho scoperto che il problema era nella conversione di questi profili e, a meno che non modifico manualmente i loro file XML, non c'è apparentemente alcun modo per far sì che i vecchi profili importati possano partecipare a Code First Migrations.

La semplice creazione di nuovi profili di pubblicazione nella soluzione convertita determina il comportamento previsto.

+1

Cura di darci una carrellata delle differenze? –

+1

@Richard: all'interno di il profilo appena creato contiene un numero di elementi aggiuntivi , ognuno dei quali rappresenta una classe di contesto. Presumo che ci sia una sorta di processo di scoperta che viene eseguito la prima volta che viene eseguito Web Deploy, che non viene eseguito come parte della conversione della soluzione VS2012. –

0

Prova questo: Enable-Migrazioni -Force

Assicurarsi che il seguito è impostata su true AutomaticMigrationsEnabled = true;

Ripubblicazione - ha funzionato per me

Problemi correlati