Bagikan melalui


Membuat dan Menghilangkan API

Metode dan menyediakan alternatif ringan untuk Migrasi untuk mengelola skema database. Metode ini berguna dalam skenario ketika data bersifat sementara dan dapat dihilangkan ketika skema berubah. Misalnya selama prototipe, dalam pengujian, atau untuk cache lokal.

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();