Bagikan melalui


Membuat dan Menghilangkan API

Metode EnsureCreated() dan EnsureDeleted() 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, EnsureCreated sering kali merupakan cara term mudah untuk menginisialisasi skema database.

Peringatan

EnsureCreated dan Migrasi tidak bekerja sama dengan baik. Jika Anda menggunakan Migrasi, jangan gunakan EnsureCreated untuk menginisialisasi skema.

Transisi dari EnsureCreated ke Migrasi bukanlah pengalaman yang mulus. Cara paling sederhana untuk melakukannya adalah dengan menghilangkan database dan membuatnya kembali menggunakan Migrasi. Jika Anda mengantisipasi penggunaan migrasi di masa mendatang, yang terbaik adalah memulai dengan Migrasi alih-alih menggunakan EnsureCreated.

EnsureDeleted

Metode EnsureDeleted ini akan menghilangkan database jika ada. Jika Anda tidak memiliki izin yang sesuai, pengecualian akan dilemparkan.

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

EnsureCreated

EnsureCreated akan membuat database jika tidak ada dan menginisialisasi skema database. Jika ada tabel (termasuk tabel untuk kelas lain DbContext ), skema tidak akan diinisialisasi.

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

Tip

Versi asinkron dari metode ini juga tersedia.

Skrip SQL

Untuk mendapatkan SQL yang digunakan oleh EnsureCreated, 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 pemeriksaan Anda sendiri untuk melihat apakah skema perlu diinisialisasi, dan menggunakan layanan IRelationalDatabaseCreator yang mendasar 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();