Ho due cartelle per le mie migrazioni (AuthContext e UserProfileContext), ognuna ha la propria migrazione e alcuni sql personalizzati da eseguire successivamente per le migrazioni dei dati e quant'altro.Prima migrazione di EF non in esecuzione dopo la distribuzione in Azure
Questo funziona correttamente quando si utilizza la console del gestore pacchetti. I
- Ripristina da produzione
- Run Update-Database -ConfigurationTypeName Migrations.Auth.Configuration
- Run Update-Database -ConfigurationTypeName Migrations.UserProfile.Configuration
Poi tutto è molto felice in il nuovo database, le migrazioni eseguite i dati mescolate dove necessario.
Ho provato a testare le migrazioni di pubblicare pezzo per:
- ripristinare la produzione sulla base di dati dev
- stringa di connessione unico (tutti i contesti usano lo stesso) indicato a dev banca dati
- Pubblica azzurro sito web
- controllato la scatola per Applica codice prime migrazioni
- selezionate che stringa di connessione singola
Ok, ha pubblicato bene; tuttavia, quando sono andato a vedere il database, non è successo niente! Non ha creato le tabelle, le colonne o gli spostamenti di dati necessari.
TLDR; Codice prime migrazioni non sono in esecuzione, dopo la pubblicazione di Azure
Update 1 Ho provato qualsiasi combinazione dei seguenti: una sola stringa di connessione singola in modo da sto indovinando che non è il problema, ed eseguire migrazioni fa controllato.
Al momento della pubblicazione, l'API viene eseguita ma non vengono apportate modifiche al database. Ho pensato che forse avevo bisogno di colpirlo per primo, ma ho solo degli errori casuali quando provo a usare l'api (che ora si basa ovviamente sulla nuova configurazione del database), e il database non è ancora cambiato.
Ho visto un paio di riferimenti là fuori sulla necessità di aggiungere qualcosa alla mia classe di avvio, ma non sono sicuro di come procedere.
Update 2 ho risolto un problema aggiunto "Persiste la sicurezza Info = True" alla mia stringa di connessione. Ora si collega effettivamente al database e chiama la mia API; tuttavia, nessuna migrazione è in esecuzione. Ho collegato il debugger all'ambiente di sviluppo di Azure e ho fatto un passo ... nella mia prima chiamata al database passo nella classe Configuration per la Migrazione in questione, quindi barfs e I non è in grado di rintracciare l'errore.
public Configuration()
{
AutomaticMigrationsEnabled = false;
MigrationsDirectory = @"Migrations\Auth";
ContextKey = "AuthContext";
}
Update 3
Va bene, scavato verso il basso e la prima volta che colpisce il database stiamo erroring. Sì, questo ha senso dal momento che il modello è cambiato, ma ho migrazioni sul posto, abilitato e controllato! Anche in questo caso, funziona benissimo durante l'esecuzione di "Update-Database" dalla console di gestione dei pacchetti, ma non quando si usa eseguire codice prime migrazioni durante la pubblicazione di Azure
Il modello backup contesto 'AuthContext' è cambiato da quando il database era creato. Prendi in considerazione l'utilizzo di Code First Migrations per aggiornare il database (http://go.microsoft.com/fwlink/?LinkId=238269).
Update 4 Ok ho trovato il problema principale qui. VS sta configurando l'attributo web.config aggiuntivo per databaseInitializer su uno solo dei miei contesti di database, quello non menzionato viene in effetti colpito prima dalla mia app.
Quindi ora devo capire come farlo includere più contesti, o combinare tutte le mie cose in un unico contesto.
Hai preso al ook questo post http://blogs.msdn.com/b/webdev/archive/2014/04/09/ef-code-first-migrations-deployment-to-an-azure-cloud-service.aspx, sembra potrebbe essere necessario aggiungere codice al codice Application_Start di Global.asax –
@JWGrazie, l'ho visto, è specifico per Azure Cloud Service e sto usando il sito Web di Azure, per il quale presumibilmente non hai bisogno di fare nulla di più ... –
Penso che devi assicurarti che il codice di migrazione db sia eseguito non importa che tipo di progetto sia. –