API Oluşturma ve Bırakma
EnsureCreated() ve EnsureDeleted() yöntemleri, veritabanı şemasını yönetmek için Geçişler'e basit bir alternatif sağlar. Bu yöntemler, verilerin geçici olduğu ve şema değiştiğinde bırakılabildiği senaryolarda yararlıdır. Örneğin prototip oluşturma sırasında, testlerde veya yerel önbelleklerde.
Bazı sağlayıcılar (özellikle ilişkisel olmayan sağlayıcılar) Geçişleri desteklemez. Bu sağlayıcılar için genellikle EnsureCreated
veritabanı şemasını başlatmanın en kolay yoludur.
Uyarı
EnsureCreated
ve Geçişler birlikte iyi çalışmaz. Geçişler kullanıyorsanız, şemayı başlatmak için kullanmayın EnsureCreated
.
Geçişler'den EnsureCreated
geçiş sorunsuz bir deneyim değildir. Bunu yapmanın en basit yolu veritabanını bırakmak ve Migrations kullanarak yeniden oluşturmaktır. Gelecekte geçişleri kullanmayı düşünüyorsanız, kullanmak yerine EnsureCreated
Yalnızca Geçişler ile başlamak en iyisidir.
EnsureDeleted
EnsureDeleted
yöntemi, varsa veritabanını bırakır. Uygun izinlere sahip değilseniz bir özel durum oluşturulur.
// Drop the database if it exists
dbContext.Database.EnsureDeleted();
EnsureCreated
EnsureCreated
yoksa veritabanını oluşturur ve veritabanı şemasını başlatır. Herhangi bir tablo varsa (başka bir DbContext
sınıfın tabloları dahil), şema başlatılmaz.
// Create the database if it doesn't exist
dbContext.Database.EnsureCreated();
Bahşiş
Bu yöntemlerin zaman uyumsuz sürümleri de kullanılabilir.
SQL Betiği
tarafından EnsureCreated
kullanılan SQL'i almak için yöntemini kullanabilirsiniz GenerateCreateScript .
var sql = dbContext.Database.GenerateCreateScript();
Birden çok DbContext sınıfı
EnsureCreated yalnızca veritabanında tablo olmadığında çalışır. Gerekirse, şemanın başlatılması gerekip gerekmediğini görmek için kendi denetiminizi yazabilir ve şemayı başlatmak için temel alınan 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();