API Oluşturma ve Bırakma

ve EnsureCreatedEnsureDeleted yöntemleri, veritabanı şemasını yönetmek için EnsureCreated basit bir alternatif sağlar. Bu yöntemler, verilerin geçici olduğu ve şema değiştiklerde bırakılan senaryolarda yararlıdır. Örneğin, prototyping sırasında, testlerde veya yerel önbellekler için.

Bazı sağlayıcılar (özellikle ilişkisel olmayanlar) Geçişleri desteklemez. Bu sağlayıcılar için EnsureCreated genellikle veritabanı şemasını başlatmanın en kolay yolu olur.

Uyarı

EnsureCreated ve Geçişler birlikte iyi çalışmıyor. Geçişler'i kullanıyorsanız şemayı başlatmak EnsureCreated için kullanmayın.

geçişlerinden EnsureCreated Geçişlere geçiş sorunsuz bir deneyim değildir. Bunu yapmak için en basit yol, veritabanını bırakmak ve Geçişler'i kullanarak yeniden oluşturmaktır. Gelecekte geçişleri kullanmayı tahmin ediyorsanız, en iyisi kullanmak yerine Geçişler ile EnsureCreated başlamaktır.

EnsureDeleted

yöntemi, EnsureDeleted varsa veritabanını bırakacak. Uygun izinlere sahip değilsanız bir özel durum oluşturur.

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

EnsureCreated

EnsureCreated yoksa veritabanını oluşturur ve veritabanı şemasını başlatılır. Herhangi bir tablo varsa (başka bir DbContext sınıfının tabloları dahil), şema başlatılmaz.

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

İpucu

Bu yöntemlerin zaman uyumsuz sürümleri de kullanılabilir.

SQL Betiği

tarafından kullanılan SQL almak EnsureCreated için GenerateCreateScript yöntemini kullanabilirsiniz.

var sql = dbContext.Database.GenerateCreateScript();

Birden çok DbContext sınıfı

EnsureCreated yalnızca veritabanında tablo mevcut olduğunda çalışır. Gerekirse, şemanın başlatılmasının gerekli olup olmadığından emin olmak için kendi denetiminizi yazabilir ve şemayı başlatmak için temel IRelationalDatabaseCreator hizmetini kullanabilirsiniz.

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

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