Utbildning
Modul
Använda en databas med minimalt API, Entity Framework Core och ASP.NET Core - Training
Lär dig hur du lägger till en databas i ett minimalt API-program.
Den här webbläsaren stöds inte längre.
Uppgradera till Microsoft Edge och dra nytta av de senaste funktionerna och säkerhetsuppdateringarna, samt teknisk support.
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
.
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();
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();
Dricks
Asynkrona versioner av dessa metoder är också tillgängliga.
Om du vill hämta den SQL som används av EnsureCreatedAsync
kan du använda metoden GenerateCreateScript.
var sql = dbContext.Database.GenerateCreateScript();
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();
Feedback om .NET
.NET är ett öppen källkod projekt. Välj en länk för att ge feedback:
Utbildning
Modul
Använda en databas med minimalt API, Entity Framework Core och ASP.NET Core - Training
Lär dig hur du lägger till en databas i ett minimalt API-program.
Dokumentation
Lägga till, ta bort och på annat sätt hantera databasschemamigreringar med Entity Framework Core
Tillämpa migreringar – EF Core
Strategier för att tillämpa schemamigreringar på produktions- och utvecklingsdatabaser med Entity Framework Core