从旧版本迁移到数据库时,程序集版本不匹配异常

问题描述

在这种情况下:我有DAL程序集,它使用EntityFramework代码拳头连接到DB。 最近,我们在程序集中添加了强名称,包括DAL。 现在,当连接到数据库时,如果最后一次迁移是在以前版本的DAL(或其他公共令牌)上进行的,则将出现如下异常:

无法加载文件或程序集'MyProject.DAL,版本= 2.6.0.0, 文化=中性,PublicKeyToken =空”或其依赖项之一。的 定位的程序集的清单定义与程序集不匹配 参考。 (来自HRESULT的异常:0x80131040)

DAL的当前版本是2.6.1.0。异常是特定于数据库的,较旧的数据库之一正在寻找2.5.1.0。如果我在当前版本上创建新的空白迁移并应用它,则异常会停止,但是如果我再次更改DAL版本,则会再次获得异常。 是什么导致此异常,以及如何防止在每次DAL版本更新中都发生此异常?

解决方法

最近,我们在程序集中添加了强名称,包括DAL

您要为these reasons中的哪个做?

当您更改公钥令牌(通过强命名)或增加AssemblyVerion(而不是AssemblyFileVersion)时,您将破坏向后兼容性。

进行这样的更改后,您可能应该重新开始一个新的初始迁移。

您也许可以使用Binding Redirect解决AssemblyVersion的差异。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...