如何在应用启动时使用EF 6更新多个数据库

时间:2015-07-17 10:36:09

标签: c# asp.net-mvc entity-framework-6 data-migration

我正在使用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();

            }

1 个答案:

答案 0 :(得分:0)

我发现了问题。我没有使用项目中迁移文件夹中的Configuration类,我自己制作了,而且那个wasen没有用。当我尝试使用migratins文件夹中的Configuration类时,它可以工作: - )