将NHibernate 2.1.0.4000迁移到.Net Framework 4

时间:2012-09-21 15:07:03

标签: c# asp.net nhibernate exception

我有一个使用NHibernate.dll的项目。我们将项目移至使用.Net Framework 4.0。我们使用FxCop和FxCop启动失败并出现错误

无法解析程序集Nhibernate.dll所以我的猜测是,如果我可以移动NHibernate.dll移动到.Net Framework 4.0,这将成功。

我试过,它给出了100个错误,关于我使用的ISet是System。**还是Ies.Collections.Generic。我使用了Ies.Collection.Generic,因为Nhibernate有一个对它的引用。

我成功地将其迁移到.Net 4.但是当我访问我的Web应用程序时,我得到了以下消息。

Inheritance security rules violated while overriding member: 'NHibernate.Cfg.Configuration.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'. Security accessibility of the overriding method must match the security accessibility of the method being overriden.

虽然我根本没有压倒一切。我在互联网上搜索并发现了几篇文章,但我不想更改NHibernate代码因为那不是我的代码。

为什么我没有使用最新的NHibernate? 因为当我使用这个时我的项目破了而且错误是没有重载方法使用3个参数(我的项目使用)

FilterDefinition(string name, string defaultCondition, IDictionary<string, IType> parameterTypes, bool useManyToOne);

现在他们有第四个参数,我不确定结果会是什么。

问题

有人可以帮我解决这个错误吗?

是否有人成功将NHibernate迁移到.Net 4?

感谢

参考文献:

http://forums.lhotka.net/forums/t/9914.aspx

Inheritance security rules violated while overriding member - SecurityRuleSet.Level2 http://community.codesmithtools.com/Template_Frameworks/f/67/p/12331/47618.aspx#47618

Weird override problem with Fluent NHibernate and .NET 4

2 个答案:

答案 0 :(得分:1)

我知道这不是您正在寻找的答案,但这就是我接触升级的方式:

  

asp.net 2.0,IIS6,NH 2.1,MVC2项目:

     

asp.net 4.0,IIS7.5,NH3.3,MVC4

  1. 确保我在大部分项目中都进行了集成测试(我不会说这是我花费了很多时间来实现的)。还可以使用错误记录模块,如ELMAH
  2. 升级到NH 3.3,运行测试,推送并离开一周以捕获任何bug.issues
  3. 升级到SLN .NET 4 (不需要重新安排NH),运行测试,推送并离开一周以捕获任何错误
  4. 从MVC2升级到MVC3,运行测试并推送,离开一周
  5. 最后从MVC3升级到MVC4
  6. 就我个人而言,我发现这是最好的方法,当然我没有在任何时候做太多的痛苦。如果没有集成测试可能覆盖我的代码的大约70%,我也无法做到这一点。

    如果我直接使用.net 4和NH.3.3,那么我会处于一个痛苦的世界,因为升级任何项目总会出现问题。我对值得做的建议是慢慢做。

    对于未来代码修改或升级的集成测试应该是无痛苦的。

答案 1 :(得分:1)