相同解决方案中的不同EntityFramework版本

本文关键字:EntityFramework 版本 解决方案 | 更新日期: 2023-09-27 18:05:38

我有一个旧的Silverlight应用程序,使用EF5,不能升级到EF6。我有另一个项目,使用EF6与不同的上下文,但我得到:

无法加载文件或程序集" EntityFramework, Version=6.0.0.0 "Culture=neutral, PublicKeyToken=b77a5c561934e089'或其中一个依赖关系。定位的程序集的清单定义不会匹配程序集引用。(Exception from HRESULT: 0x80131040)

我假设这是因为EF5已经加载(它在主项目中,不要问我为什么),它仍然指向dll而不是EF6。我怎样才能让它工作?

我补充说:

   <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
        <codeBase version="5.0.0.0" href="C:'Projects'project'2.1.1EF2'packages'EntityFramework.5.0.0'lib'net45'EntityFramework.dll"/>
        <codeBase version="6.0.0.0" href="C:'Projects'project'2.1.1EF2'packages'EntityFramework.6.1.0'lib'net45'EntityFramework.dll"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

到我的主网页。配置以下lgos的建议,但现在我收到:

{"System.Data.Entity.Internal.ConfigFile。EntityFrameworkSection不能强制转换为[B]System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection。类型A源自"EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"上下文中的"Default",位于位置"C:'Windows' microt.net 'Framework'v4.0.30319'Temporary ASP"。净babe28 97文件' project211ef ' ' e7ea3fa9 '会议' dl3 ' 01275099 ' 01275099 f08_d86ecf01 ' EntityFramework.dll"。类型B源自"EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"上下文中的"Default",位于位置"C:'Projects'project'2.1.1EF2'packages'EntityFramework.6.1.0'lib'net45'EntityFramework.dll"。"}

它看起来仍然试图使用EF5,尽管它访问EF6实体部分。

我通过添加绑定重定向修复了这个问题。在主web.config中我重定向到新版本,然后在子web.config中重定向到旧版本。

相同解决方案中的不同EntityFramework版本

通过在配置文件中定义程序集绑定,可以在同一个应用程序中使用两个不同版本的程序集。我想这个答案应该对你有所帮助。