我正在使用Entity Framework 6,并且有几个需要在app_start上更新的数据库。 我为每个客户提供了一个数据库,因此我尝试更新的每个数据库的数据结构都是等于的,我在解决方案中使用了动态连接字符串。
现在,我想确保在部署新版本时,在我的所有数据库上更新数据模型。所以我编写了如下代码,用于在发布时进行更新。但我得到一个关于“未启用自动迁移”的例外。如果我设置AutomaticMigrationsEnabled = true,它会失败并显示一个错误,名为“MyNewTable”的对象已经在数据库中,并且这是真的,它已经在先前的更新中创建,但它应该已经从迁移日志。
如何在不丢失数据的情况下确保更新所有数据库?
非常感谢
foreach (Customer customer in customerList)
{
DbMigrationsConfiguration configuration = new DbMigrationsConfiguration();
configuration.TargetDatabase = new DbConnectionInfo(MakeConnectionString(customer),"System.Data.SqlClient");
configuration.ContextType = typeof(MyContext);
configuration.MigrationsAssembly = GetType().Assembly;
configuration.MigrationsNamespace = GetType().Namespace;
var migrator = new DbMigrator(configuration);
migrator.Update();
}
答案 0 :(得分:0)
我发现了问题。我没有使用项目中迁移文件夹中的Configuration类,我自己制作了,而且那个wasen没有用。当我尝试使用migratins文件夹中的Configuration类时,它可以工作: - )