从EF 4.3升级到EF 6后,实体框架基于代码的迁移无法正常工作

时间:2013-11-04 11:59:03

标签: c# entity-framework ef-code-first ef-migrations entity-framework-6

我们正在密集使用Entity Framework 4.3,在几个站点中首先使用基于.NET 4.0的代码项目,一切都运行顺畅,快速且无bug,但为了实现Entity Framework团队最后的速度改进,我们正在计划升级到EF6和.NET 4.5

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

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

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失败,因为一个或多个对象访问此列出现

0 个答案:

没有答案