我们正在密集使用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失败,因为一个或多个对象访问此列出现