Qual è il modo migliore per eseguire tutte le migrazioni di db richieste all'avvio dell'applicazione con EF 4.3?Entity framework 4.3 esegue migrazioni all'avvio dell'applicazione
risposta
Il modo migliore dovrebbe essere l'utilizzo del nuovo inizializzatore MigrateDatabaseToLatestVersion
.
Database.SetInitializer<YourContext>(
new MigrateDatabaseToLatestVersion<YourContext, YourMigrationsConfig>());
Database.Initialize(false);
Dove è destinato questo codice? Non è possibile utilizzare Database.Initialize in App_Start poiché non può essere utilizzato in un contesto statico. –
@ MaximV.Pavlov: prova ad aggiungerlo al costruttore statico del tuo contesto. –
@LadislavMrnka: qual è lo scopo di 'Database.Initialize (false);'? Dai miei test con 'MigrateDatabaseToLatestVersion', il database viene creato, seminato e aggiornato alla versione più recente senza quella seconda chiamata di inizializzazione. (in EF5 ...) – demoncodemonkey
Un grande descrizione delle opzioni di configurazione EF 4.3 può essere trovato alla EF 4.3 Configuration File Settings sul blog del team di ADO.NET. L'ultima sezione descrive Initializer Database, incluso il nuovo inizializzatore Code First MigrateDatabaseToLatestVersion
.
Anche se Entity Framework-come tante altre funzionalità di .NET 4.x-favori convenzione sulla configurazione, questo è un caso in cui potrebbe essere molto utile per impostare l'inizializzazione MigrateDatabaseToLatestVersion
database tramite file di configurazione dell'applicazione, piuttosto che in modo esplicito codice nella tua applicazione.
Quando si utilizza la configurazione, prendere nota del mio commento su quel post per rendere la configurazione molto più leggibile. – Rudi
Avevo bisogno di farlo esplicitamente, perché io uso un uber-context per la migrazione, un superset delle altre migrazioni. Il bit chiave è:
var dbMigrator = new System.Data.Entity.Migrations.DbMigrator(
new Lcmp.EF.Migrations.Migrations.Configuration());
dbMigrator.Update();
con una spolverata di registrazione Elmah, io in realtà uso questo, chiamato da Application_Start(). Pezzi di esso sono rubati dalle idee altrui. Non sono sicuro che la parte interbloccata di sicurezza del filo sia necessaria.
public static int IsMigrating = 0;
private static void UpdateDatabase()
{
try
{
if (0 == System.Threading.Interlocked.Exchange(ref IsMigrating, 1))
{
try
{
// Automatically migrate database to catch up.
Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(new Exception("Checking db for pending migrations.")));
var dbMigrator = new System.Data.Entity.Migrations.DbMigrator(new Lcmp.EF.Migrations.Migrations.Configuration());
var pendingMigrations = string.Join(", ", dbMigrator.GetPendingMigrations().ToArray());
Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(new Exception("The database needs these code updates: " + pendingMigrations)));
dbMigrator.Update();
Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(new Exception("Done upgrading database.")));
}
finally
{
System.Threading.Interlocked.Exchange(ref IsMigrating, 0);
}
}
}
catch (System.Data.Entity.Migrations.Infrastructure.AutomaticDataLossException ex)
{
Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(ex));
}
catch (Exception ex)
{
Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(ex));
}
}
- 1. Errore migrazioni Entity Framework 4.3
- 2. Entity Framework 4.3 Migrazioni spostano i dati esistenti
- 3. Reimposta migrazioni Entity Framework 7
- 4. Entity Framework 4.3 e 5.0 Aggiornamento differenze
- 5. Come aggiungere la descrizione alle colonne nel codice Entity Framework 4.3 prima utilizzando le migrazioni?
- 6. Entity Framework 4.3 - Errore di mappatura e migrazione TPH
- 7. Entity Framework 4.3. Nome colonna non valido 'CreatedOn'
- 8. Entity Framework 4.3 codice prima denominazione del database
- 9. Entity Framework 4.3 e Moq non possono creare DbContext deridere
- 10. Entity Framework 4.3 Il codice prima non può creare Datetime2?
- 11. Dimensioni massime del pool in corso con Entity Framework 4.3
- 12. Entity Framework - Start Over - Annulla/Ripristina tutte le migrazioni
- 13. Quali comandi Entity Framework 6 abilita le migrazioni?
- 14. Entity Framework 5 Migrazioni che creano procedure/funzioni
- 15. Entity Framework codice prime migrazioni errore di lancio
- 16. Nessuna creazione iniziale con le migrazioni di Entity Framework
- 17. Entity Framework Core 1.0 migrazioni code-first utilizzando il codice?
- 18. Aggiunta di istruzioni "GO" alle migrazioni di Entity Framework
- 19. Qual è il modo migliore per comprimere tutte le migrazioni di Entity Framework esistenti
- 20. Come modificare l'ordine delle colonne con Entity Framework Code Prime migrazioni
- 21. Come utilizzare le migrazioni su un db esistente in produzione creato utilizzando Entity Framework 4.1?
- 22. Come disabilitare la verifica della compatibilità del modello in Entity Framework 4.3?
- 23. Il modo migliore per eseguire l'inizializzazione dei dati in Entity Framework 4.3
- 24. LoadProperty in Entity Framework 5
- 25. Entity Framework Migrations - Il seed viene eseguito anche se non vi sono migrazioni?
- 26. Migrazioni di Entity Framework in esecuzione durante Octopus Distribuire CI in Azure
- 27. EF 4.3 Migrazioni automatiche con più DbContexts in un database
- 28. EF 4.3 Migrazioni di codice con CreateIndex e argomenti anonimi
- 29. Entity Framework Migrations - Managing In Branches
- 30. Entity Framework Code Prime migrazioni di dati non funzionanti con VS2012 Web Deploy
Vuoi dire eseguire dal codice? Quindi, ecco un link che puoi dare un'occhiata http://romiller.com/2012/02/09/running-scripting-migrations-from-code/ –