5

Ho un'applicazione ASP.NET MVC che utilizza Entity Framework 5.0 e Code First.Durante la pubblicazione da VS 2012 in un sito Web di Azure i dati di seed di Entity Framework non vengono inseriti in SQL Azure

Ho pubblicato il mio sito Web utilizzando Visual Studio 2012 nel sito Web di Azure. Tutto sembra funzionare tranne che i dati seme non sono stati inseriti in SQL Azure; il sito funziona, il database è compilato, ma i dati seme sono non inseriti. Quando lo eseguo sul mio computer locale, tutto funziona correttamente.

Sulla base di esempi che ho visto, durante la pubblicazione da Visual Studio 2012 è disponibile un'opzione chiamata "Esegui prima migrazione codice" (vedi immagine sotto).

enter image description here

Ma quando provo a pubblicare il mio sito web l'opzione “Esegui codice prima migrazione” non è disponibili. enter image description here

Credo che questo possa avere qualcosa a che fare con la configurazione della mia soluzione. Ho 3 progetti che costituiscono la mia domanda.

  • Sito - Si tratta di un progetto ASP.NET MVC. Ha un Entity Framework di riferimento, ma tutto il codice di accesso ai dati (DBContext) si trova nel progetto Data
  • Dominio - Questa è una libreria di classi. Non ha un riferimento a Entity Framework
  • Dati - Questo progetto fa riferimento a Entity Framework. Ho una classe di configurazione che eredita da DbMigrationsConfiguration. In questa classe di configurazione I sostituisce il metodo Seed.

Ancora tutto funziona sul mio PC locale. Per la maggior parte tutto funziona su Azure; il sito web funziona, il database viene creato, ma i dati seme non vengono inseriti.

Per il mio scenario, esistono raccomandazioni su come ottenere i dati seme da inserire in SQL Azure quando eseguo una pubblicazione da Visual Studio 2012?

+0

Potrebbe essere necessario definire il contesto Entity Framework nel file web.config. Le istruzioni possono essere trovate [qui] (http://www.ralphlavelle.net/2012/09/entity-framework-code-first-webconfig.html) in dettaglio. –

risposta

0

È necessario modificare manualmente il file pubxml (Properties/PublishingProfiles/YourName.pubxml) per far apparire la casella di controllo. Ho un post sul blog che descrive la situazione e la soluzione qui: http://www.dominicstpierre.net/2012/11/enable-code-first-migrations-check-box.html

Questa parte è necessario modificare manualmente

<PublishDatabaseSettings> 
    <Objects xmlns=""> 
    <ObjectGroup Name="Namespace.Models.YourDBClass" Order="1" Enabled="True"> 
     <Destination Path="your-connection-string-goes-here" /> 
     <Object Type="DbCodeFirst"> 
     <Source Path="DBMigration" DbContext="Namespace.Models.YourDBClass, AssamblyName" MigrationConfiguration="Namespace.Migrations.Configuration, Assambly" Origin="Convention" /> 
     </Object> 
    </ObjectGroup> 
    </Objects> 
</PublishDatabaseSettings> 

Change Namespace.Models.YourDBClass dalla vostra classe che eredita DbContext, cambiamento Namespace.Migratins.Configuration per adattare lo spazio dei nomi di configurazione della migrazione e Assambly con il nome Assambly.

Salvare e aprire la procedura guidata di pubblicazione con questa casella di controllo.

+1

Questo sembra non funzionare più in VS2013update4. – sheamus