Megosztás a következőn keresztül:


API-k létrehozása és elvetése

A EnsureCreatedAsync és EnsureDeletedAsync metódusok könnyű alternatívát nyújtanak a Migrations-hoz az adatbázisséma kezeléséhez. Ezek a módszerek olyan helyzetekben hasznosak, amikor az adatok átmenetiek, és a séma módosításakor elvethetők. Például prototípus-készítés, tesztek vagy helyi gyorsítótárak esetében.

Egyes szolgáltatók (különösen a nem relációs szolgáltatók) nem támogatják a migrálást. Ezeknél a szolgáltatóknál gyakran EnsureCreatedAsync az adatbázisséma inicializálásának legegyszerűbb módja.

Figyelmeztetés

EnsureCreatedAsync és migrációk nem jól működnek együtt. Ha a Migrations funkciót használja, ne használja EnsureCreatedAsync a séma inicializálásához.

A EnsureCreatedAsync-ról a migrációkra való áttérés nem zökkenőmentes. Ennek legegyszerűbb módja az adatbázis elvetése és újbóli létrehozása a Migrálások használatával. Ha a jövőben számít arra, hogy migrációkat fog használni, a legjobb, ha rögtön a Migrációkkal kezd, ahelyett hogy a EnsureCreatedAsync-t használná.

EnsureDeletedAsync

A EnsureDeletedAsync metódus elveti az adatbázist, ha létezik. Ha nem rendelkezik a megfelelő engedélyekkel, a rendszer kivételt jelez.

// Drop the database if it exists
await dbContext.Database.EnsureDeletedAsync();

EnsureCreatedAsync

EnsureCreatedAsync létrehozza az adatbázist, ha nem létezik, és inicializálja az adatbázissémát. Ha vannak táblák (beleértve egy másik DbContext osztály tábláját is), a séma nem lesz inicializálva.

// Create the database if it doesn't exist
dbContext.Database.EnsureCreatedAsync();

Borravaló

Ezen metódusok aszinkron verziói is elérhetők.

SQL-szkript

A EnsureCreatedAsyncáltal használt SQL lekéréséhez használhatja a GenerateCreateScript metódust.

var sql = dbContext.Database.GenerateCreateScript();

Több DbContext osztály

EnsureCreated csak akkor működik, ha nincsenek táblák az adatbázisban. Szükség esetén saját ellenőrzést írhat, hogy ellenőrizze, hogy a sémát inicializálni kell-e, és a mögöttes IRelationalDatabaseCreator szolgáltatással inicializálhatja a sémát.

// TODO: Check whether the schema needs to be initialized

// Initialize the schema for this DbContext
var databaseCreator = dbContext.GetService<IRelationalDatabaseCreator>();
databaseCreator.CreateTables();