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

本文关键字:EF 更新 数据库 应用程序 启动 | 更新日期: 2023-09-27 18:03:07

我使用的是Entity Framework 6,并且有几个数据库需要在app_start上更新。我为每个客户都有一个数据库,所以我试图更新的每个数据库上的数据结构是相等的,我在解决方案中使用了一个动态连接字符串。

现在,我想确保在部署新版本时,所有数据库上的数据模型都已更新。因此,我编写了如下代码,以便在发布时进行更新。但我得到了一个关于"自动迁移未启用"的异常。如果我将AutomaticMigrationsEnabled设置为true,它将失败,并显示一个错误,即数据库中已经存在一个名为"MyNewTable"的对象,如果是true,则它已经在以前的更新中创建,但它应该从迁移日志中知道这一点。

如何确保我的所有数据库都得到更新而不会丢失数据?

提前非常感谢

            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();
            }

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

我发现了问题。我没有在项目中使用迁移文件夹中的Configuration类,而是自己创建的,但这不起作用。当我尝试使用migrations文件夹中的Configuration类时,它成功了:-(