EF 4.4:模型更改未与数据库同步

时间:2013-07-16 19:38:35

标签: c# .net entity-framework

我在Entity Framework中为我的模型添加了两列,并将一个字段从字符串更改为Enumeration。当我转到Package Manager Console并输入“update-database”时,我收到以下错误:

System.Runtime.Serialization.SerializationException: Type is not resolved for member 'System.Data.Entity.Migrations.Design.ToolingFacade+UpdateRunner,EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
   at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
   at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
   at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration, Boolean force)
   at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0()
   at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
Type is not resolved for member 'System.Data.Entity.Migrations.Design.ToolingFacade+UpdateRunner,EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

启用迁移时出现同样的错误。

我看到一个问题建议摆脱__Migrations表,我做了,但它似乎没有帮助。

另一个解决方案建议将项目更改为.NET 4.5,然后重新安装EF 5,我做了,但所有这些都改变了错误中的EF版本号。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

修正了这个问题;必须从文件路径中删除&符号(!!!!)

答案 1 :(得分:0)

我遇到了同样的问题,结果是使用不同版本的EntityFramework解决方案中的两个项目。我的代码第一个对象是在他们自己的.NET Framework 4.0程序集中构建的,但该解决方案的启动项目是.NET 4.5 MVC项目。尽管两个项目都使用了Entity Framework“5.0”,但EF5的.NET 4版本是一个不同的程序集(版本4.4)。

我发现允许“Update-Database”命令工作的临时修复是在Web.config文件中更改此部分:

  <dependentAssembly>
    <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
  </dependentAssembly>

对此:

  <dependentAssembly>
    <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0"/>
  </dependentAssembly>

我的最终解决方法是使用我的代码第一类更新程序集到.NET 4.5并重新安装EF5。