这似乎是一个显而易见的问题,但是CreateDatabaseIfNotExists.InitializeDatabase
是原子的吗?
目前我的代码与下面类似。这是为了确保数据库创建完全完成,或者数据库不存在。
public class MyContext : CreateDatabaseIfNotExists<MyContext>
{
public override void InitializeDatabase(MyContext context)
{
base.InitializeDatabase(context);
//Removed custom initialization code
}
protected override void Seed(MyContext context)
{
//Removed adding / updating seed data
context.SaveChanges();
base.Seed(context);
}
}
public static class DbCreator
{
public static void CreateDatabase()
{
using (MyContext dbContext = new MyContext())
{
try
{
var dbIntializer = new MyDbInitializer();
dbIntializer.InitializeDatabase(dbContext);
}
catch (Exception ex)
{
dbContext.Database.Delete();
throw;
}
}
}
}
我在一些明显的地方寻找答案,例如https://msdn.microsoft.com/en-us/library/gg696403(v=vs.113).aspx。
我正在使用Entity Framework 6.1.3