Membuat dan Menghilangkan API
Metode
Beberapa penyedia (terutama yang non-relasional) tidak mendukung Migrasi. Untuk penyedia ini, EnsureCreatedAsync
sering kali merupakan cara term mudah untuk menginisialisasi skema database.
Peringatan
EnsureCreatedAsync
dan Migrasi tidak bekerja sama dengan baik. Jika Anda menggunakan Migrasi, jangan gunakan EnsureCreatedAsync
untuk menginisialisasi skema.
Transisi dari EnsureCreatedAsync
ke Migrasi bukanlah pengalaman yang mulus. Cara paling sederhana untuk melakukannya adalah dengan menghilangkan database dan membuatnya kembali menggunakan Migrasi. Jika Anda mengantisipasi menggunakan migrasi di masa mendatang, sebaiknya langsung memulai dengan Migrasi alih-alih menggunakan EnsureCreatedAsync
.
PastikanTerhapusAsync
Metode EnsureDeletedAsync
akan menghilangkan database jika ada. Jika Anda tidak memiliki izin yang sesuai, pengecualian akan dilemparkan.
// Drop the database if it exists
await dbContext.Database.EnsureDeletedAsync();
PastikanCreatedAsync
EnsureCreatedAsync
akan membuat database jika tidak ada dan menginisialisasi skema database. Jika ada tabel (termasuk tabel untuk kelas DbContext
lain), skema tidak akan diinisialisasi.
// Create the database if it doesn't exist
dbContext.Database.EnsureCreatedAsync();
Tip
Versi asinkron dari metode ini juga tersedia.
Skrip SQL
Untuk mendapatkan SQL yang digunakan oleh EnsureCreatedAsync
, Anda dapat menggunakan metode GenerateCreateScript.
var sql = dbContext.Database.GenerateCreateScript();
Beberapa kelas DbContext
EnsureCreated hanya berfungsi ketika tidak ada tabel yang ada dalam database. Jika diperlukan, Anda dapat menulis pengecekan Anda sendiri untuk melihat apakah skema perlu diinisialisasi, dan menggunakan layanan IRelationalDatabaseCreator yang mendasari untuk menginisialisasi skema.
// TODO: Check whether the schema needs to be initialized
// Initialize the schema for this DbContext
var databaseCreator = dbContext.GetService<IRelationalDatabaseCreator>();
databaseCreator.CreateTables();