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 EnsureCreatedYalnı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 EnsureCreatedkullanı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();