Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Metoderna EnsureCreatedAsync och EnsureDeletedAsync är ett enkelt alternativ till migreringar för att hantera databasschemat. Dessa metoder är användbara i scenarier när data är tillfälliga och kan tas bort när schemat ändras. Till exempel under prototyper, i tester eller för lokala cacheminnen.
Vissa leverantörer (särskilt icke-relationella) stöder inte migreringar. För dessa leverantörer är EnsureCreatedAsync ofta det enklaste sättet att initiera databasschemat.
Varning
EnsureCreatedAsync och migreringar fungerar inte bra tillsammans. Om du använder migreringar ska du inte använda EnsureCreatedAsync för att initiera schemat.
Övergången från EnsureCreatedAsync till migrationer är inte helt utan problem. Det enklaste sättet att göra det är att släppa databasen och återskapa den med hjälp av migreringar. Om du förväntar dig att använda migreringar i framtiden är det bäst att bara börja med migreringar i stället för att använda EnsureCreatedAsync.
Se till att ta bortasynkronisering
Metoden EnsureDeletedAsync tar bort databasen om den existerar. Om du inte har rätt behörigheter genereras ett undantag.
// Drop the database if it exists
await dbContext.Database.EnsureDeletedAsync();
Se till attSkapaasynkronisering
EnsureCreatedAsync skapar databasen om den inte finns och initierar databasschemat. Om det finns tabeller (inklusive tabeller för en annan DbContext-klass) initieras inte schemat.
// Create the database if it doesn't exist
dbContext.Database.EnsureCreatedAsync();
Tips
Asynkrona versioner av dessa metoder är också tillgängliga.
SQL-skript
Om du vill hämta den SQL som används av EnsureCreatedAsynckan du använda metoden GenerateCreateScript.
var sql = dbContext.Database.GenerateCreateScript();
Flera DbContext-klasser
EnsureCreated fungerar bara när det inte finns några tabeller i databasen. Om det behövs kan du skriva en egen kontroll för att se om schemat behöver initieras och använda den underliggande IRelationalDatabaseCreator-tjänsten för att initiera schemat.
// TODO: Check whether the schema needs to be initialized
// Initialize the schema for this DbContext
var databaseCreator = dbContext.GetService<IRelationalDatabaseCreator>();
databaseCreator.CreateTables();