Ho un'applicazione ASP.NET MVC 6 e devo chiamare i metodi Database.EnsureCreated
e Database.Migrate
.
Ma dove dovrei chiamarli?
Penso che questa sia una domanda importante e dovrebbe essere ben fornita!
Che cos'è Database.EnsureCreated?
context.Database.EnsureCreated()
è un nuovo metodo di base EF che garantisce l'esistenza del database per il contesto. Se esiste, non viene intrapresa alcuna azione. Se non esiste, vengono creati il database e tutti i relativi schemi e inoltre si assicura che sia compatibile con il modello per questo contesto.
Nota: questo metodo non utilizza le migrazioni per creare il database. Inoltre, il database creato non può essere successivamente aggiornato utilizzando le migrazioni. Se si sta DbContext.Database.Migrate()
mira un database relazionale e si utilizzano le migrazioni, è possibile utilizzare il metodo DbContext.Database.Migrate()
per garantire che il database sia stato creato e tutte le migrazioni vengano applicate.
Come lo abbiamo fatto con EF 6?
context.Database.EnsureCreated()
è equivalente agli approcci elencati di seguito di EF 6:
Console di gestione pacchetti:
Enable-Migrations -EnableAutomaticMigrations. Aggiungere-migrazione / Update-Database.
Dal codice:
Database.SetInitializer CreateDatabaseIfNotExists
o
Con DbMigrationsConfiguration e imposta AutomaticMigrationsEnabled = true;
Che cos'è Database.Migrate?
Applica eventuali migrazioni in sospeso per il contesto al database. Creerà il database se non esiste già.
Come lo abbiamo fatto con EF 6?
context.Database.Migrate()
è equivalente agli approcci elencati di seguito di EF 6:
Console di gestione pacchetti:
Update-Database -TargetMigration
Con una DbMigrationsConfiguration personalizzata:
AutomaticMigrationsEnabled = false; o con DbMigrator.
Conclusione :
Se si utilizzano le migrazioni, esiste context.Database.Migrate()
. Se non vuoi migrazioni e vuoi solo un database veloce (di solito per i test), usa context.Database.EnsureCreated () / GuaranteDeleted ().