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