API Oluşturma ve BırakmaCreate and Drop APIs

Ensuyeniden oluşturma ve EnsureDeleted yöntemleri, veritabanı şemasını yönetmeye yönelik geçişlere hafif bir alternatif sağlar.The EnsureCreated and EnsureDeleted methods provide a lightweight alternative to Migrations for managing the database schema. Bu yöntemler, verilerin geçici olduğu ve şema değiştiğinde bırakılan senaryolarda faydalıdır.These methods are useful in scenarios when the data is transient and can be dropped when the schema changes. Örneğin, prototipleme sırasında, testlerde veya yerel önbellekler için.For example during prototyping, in tests, or for local caches.

Bazı sağlayıcılar (özellikle ilişkisel olmayan) geçişleri desteklemez.Some providers (especially non-relational ones) don't support Migrations. Bu sağlayıcılar için, veritabanı şemasını başlatmanın en kolay yolu genellikle yeniden oluşturulur.For these providers, EnsureCreated is often the easiest way to initialize the database schema.

Uyarı

Yeniden oluşturulup geçişler birlikte iyi çalışmaz.EnsureCreated and Migrations don't work well together. Geçişleri kullanıyorsanız şemayı başlatmak için yeniden oluşturulması kullanmayın.If you're using Migrations, don't use EnsureCreated to initialize the schema.

Geçişlere geçiş aşamasından geçiş, sorunsuz bir deneyim değildir.Transitioning from EnsureCreated to Migrations is not a seamless experience. Bunu yapmanın en kolay yolu, veritabanını bırakıp geçişleri kullanarak yeniden oluşturmayı kullanmaktır.The simplest way to do it is to drop the database and re-create it using Migrations. Daha sonra geçişlerde geçiş yapmayı düşünüyorsanız, en iyi şekilde, yeniden oluşturulması yerine geçişle başlamak yeterlidir.If you anticipate using migrations in the future, it's best to just start with Migrations instead of using EnsureCreated.

EnsureDeletedEnsureDeleted

EnsureDeleted yöntemi, varsa veritabanını de bırakacak.The EnsureDeleted method will drop the database if it exists. Uygun izinleriniz yoksa bir özel durum oluşturulur.If you don't have the appropriate permissions, an exception is thrown.

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

Yeniden oluşturulduEnsureCreated

Yeniden oluşturma, mevcut değilse veritabanını oluşturur ve veritabanı şemasını başlatabilir.EnsureCreated will create the database if it doesn't exist and initialize the database schema. Herhangi bir tablo varsa (başka bir DbContext sınıfı için tablolar dahil), şema başlatılmaz.If any tables exist (including tables for another DbContext class), the schema won't be initialized.

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

İpucu

Bu yöntemlerin zaman uyumsuz sürümleri de mevcuttur.Async versions of these methods are also available.

SQL betiğiSQL Script

Yeniden oluştururken kullanılan SQL 'i almak için GenerateCreateScript yöntemini kullanabilirsiniz.To get the SQL used by EnsureCreated, you can use the GenerateCreateScript method.

var sql = dbContext.Database.GenerateCreateScript();

Birden çok DbContext sınıfıMultiple DbContext classes

Ensuyeniden oluşturulması yalnızca veritabanında hiçbir tablo yoksa işe yarar.EnsureCreated only works when no tables are present in the database. Gerekirse, şemanın başlatılmış olması gerekip gerekmediğini görmek için kendi kontrol etmeniz yazabilir ve şemayı başlatmak için temeldeki ırelationaldatabasecreator hizmetini kullanın.If needed, you can write your own check to see if the schema needs to be initialized, and use the underlying IRelationalDatabaseCreator service to initialize the schema.

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

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