Vytvoření a přemístění rozhraní API
Metody EnsureCreated() poskytují EnsureDeleted() jednoduchou alternativu k migracím pro správu schématu databáze. Tyto metody jsou užitečné ve scénářích, kdy jsou data přechodná a při změně schématu je možné je vyhodit. Například při vytváření prototypů, v testech nebo u místních mezipamětí.
Někteří poskytovatelé (zejména nerelační) nepodporují migrace. Pro tyto poskytovatele je často nejjednodušší způsob, EnsureCreated
jak inicializovat schéma databáze.
Upozornění
EnsureCreated
a migrace nefungují dobře společně. Pokud používáte migrace, nepoužívejte EnsureCreated
k inicializaci schématu.
Přechod z EnsureCreated
migrace není bezproblémový. Nejjednodušší způsob, jak to udělat, je odstranit databázi a znovu ji vytvořit pomocí migrací. Pokud očekáváte použití migrací v budoucnu, je nejlepší začít s migrací místo použití EnsureCreated
.
EnsureDeleted
Tato EnsureDeleted
metoda databázi zahodí, pokud existuje. Pokud nemáte příslušná oprávnění, vyvolá se výjimka.
// Drop the database if it exists
dbContext.Database.EnsureDeleted();
EnsureCreated
EnsureCreated
vytvoří databázi, pokud neexistuje a inicializuje schéma databáze. Pokud existují nějaké tabulky (včetně tabulek pro jinou DbContext
třídu), schéma se inicializuje.
// Create the database if it doesn't exist
dbContext.Database.EnsureCreated();
Tip
K dispozici jsou také asynchronní verze těchto metod.
skript SQL
K získání SQL, které EnsureCreated
používá , můžete použít metoduGenerateCreateScript.
var sql = dbContext.Database.GenerateCreateScript();
Více tříd DbContext
EnsureCreated Funguje pouze v případě, že v databázi nejsou žádné tabulky. V případě potřeby můžete napsat vlastní kontrolu, abyste zjistili, jestli se schéma musí inicializovat, a pomocí základní služby IRelationalDatabaseCreator inicializovat schéma.
// TODO: Check whether the schema needs to be initialized
// Initialize the schema for this DbContext
var databaseCreator = dbContext.GetService<IRelationalDatabaseCreator>();
databaseCreator.CreateTables();