【问题标题】:Migrating NHibernate 2.1.0.4000 to .Net Framework 4将 NHibernate 2.1.0.4000 迁移到 .Net Framework 4
【发布时间】:2012-09-21 15:07:03
【问题描述】:

我有一个使用 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

【问题讨论】:

  • 为什么需要将其迁移到 .NET 4?它将在 .NET 4 项目上按原样运行。
  • 关于违反的安全规则,这些似乎是让 NHibernate 3.3 为 .Net 4 构建所必需的更改:github.com/oskarb/nhibernate-core/commit/… 请注意,尽管在 .Net 4 上构建 NH 不是必需的.此外,NH4 的工作目前正在进行中,其目标是 .Net 4。

标签: c# asp.net nhibernate exception


【解决方案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、运行测试、实时推送并离开一周以发现任何 bugs.issues
  3. 升级到 SLN .NET 4(不需要重新编译 NH),运行测试,实时推送,然后离开一周以发现任何错误
  4. 从 MVC2 升级到 MVC3,运行测试并实时推送,请假一周
  5. 终于从 MVC3 升级到 MVC4

就我个人而言,我发现这是最好的方法,而且肯定会减少我的痛点,因为我在任何时候都没有做太多事情。如果没有覆盖大约 70% 代码的集成测试,我也无法做到这一点。

如果我直接使用 .net 4 和 NH.3.3,那么我将陷入痛苦的境地,因为升级任何项目都会遇到问题。对于有价值的事情,我的建议是慢慢来。

还可以考虑进行集成测试,以便将来的代码修改或升级应该很轻松。

【讨论】:

    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      • 2022-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-17
      • 2012-12-22
      相关资源
      最近更新 更多