1

我们在多个站点中大量使用 Entity Framework 4.3 和基于代码的 .NET 4.0 项目,一切运行顺利、快速且无错误,但为了实现 Entity Framework 团队所做的最后一次速度改进,我们现在计划升级到 EF6 和.NET 4.5

在修改了几个 using 子句后(由于最新版本中的命名空间更改),如果从空数据库开始,一切似乎都可以正常工作,但是一旦 Context() 构造尝试打开现有客户数据库,就会出现异常发生了,显然基于代码的迁移有问题。

我的基于代码的迁移配置如下:

internal sealed class Configuration : DbMigrationsConfiguration<Context>
{
   public Configuration()
   {
       AutomaticMigrationsEnabled = true;
       AutomaticMigrationDataLossAllowed = true;
   }
}

使用此应用程序初始化程序 (program.cs)

Database.SetInitializer(new MigrateDatabaseToLatestVersion<Context, Configuration>());
Database.DefaultConnectionFactory = new UniversalDbConnection();

将 UniversalDbConnection 声明为

class UniversalDbConnection : IDbConnectionFactory
{
    public DbConnection CreateConnection(string givenString)
    {
        switch (Preferences.DatabaseVendor)
        {
            case ConnectionPreset.PostgreSQL:
                return new PgSqlConnection(Preferences.ConnectionString);
            default:
                SqlConnectionFactory factory = new SqlConnectionFactory(Preferences.ConnectionString);
                return factory.CreateConnection(Preferences.ConnectionString);
        }
    }
}

不幸的是,一个异常声明: 对象“FK_StockTests_FormulaSteps_Step_Id”依赖于列“Step_Id”。ALTER TABLE DROP COLUMN Step_Id 失败,因为出现了一个或多个对象访问此列

4

0 回答 0