升级到EF 6.1时出现问题

时间:2014-08-08 22:17:09

标签: frameworks entity driver upgrade

尝试从nuGet更新我的EF包,但我认为它没有正确安装。

安装程序似乎顺利完成,但在删除旧的.Edmx模型后,它不会让我添加6.x模型,因为该选项显示为灰色,并显示错误消息“您的项目引用旧版本在执行此操作之前,要使用最新版本退出此向导并进行升级。“

研究表明我需要删除System.Data.Entity引用,但是没有修复它。问题似乎是我的EntityFramework.dll引用仍然在5.0(运行时版本v4.0.30319),即使在升级之后。我试过卸载&重新安装EF,它仍然在引用下放入旧驱动程序。当我删除那个EntityFramework引用时,我能够添加一个EF 6模型,但是由于驱动程序是旧的,我需要几个名称空间,例如System.Data.Entity.Core。我做错了什么或者我是否需要单独下载一个新的EntityFramework.dll驱动程序,如果是这样,我会在哪里获得它?

1 个答案:

答案 0 :(得分:0)

前几天我一直面临类似的问题。一些引用的项目使用的是EF v4.4.0.0,但是我添加到当前项目的EF I(通过NuGet)是v6.0.0.0。问题是,名称空间(和一些构造函数)在版本之间发生了变化。

你可以通过添加

来破解它
 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="6.0.0.0" />
  </dependentAssembly>
 </assemblyBinding>

但这导致程序有时会失败......

Method not found: 'Void System.Data.Entity.DbContext..ctor(System.Data.Objects.ObjectContext, Boolean)'.

我认为最好的解决方案是在整个项目中使用相同版本的EF。不幸的是(在我的情况下),有时您必须降级到旧版本,因为有些项目在团队/公司中广泛共享。