【问题标题】:upgrade to nhibernate 3.1升级到休眠 3.1
【发布时间】:2012-02-08 21:06:17
【问题描述】:

我有一个使用 NHibernate(2.2 版)的项目。升级到 NHibernate 3.2 ,我应该怎么做?

我需要在 dll 之后进行升级吗?

  1. NHibernate.Linq.dll
  2. Iesi.Collections.dll
  3. Castle.Core.dll
  4. Castle.DynamicProxy2.dll
  5. Lo​​g4net.dll

我需要那个升级 hbm 文件吗?我需要那个升级 hibernate.cfg.xml 文件吗?

【问题讨论】:

  • 您不再需要 NHibernate.Linq,但您需要更新所有查询,因为 NHibernate 现在拥有自己的 LINQ 提供程序,它属于“查询”而不是“Linq”。你应该分支你的应用程序并在那里进行升级,因为毫无疑问你需要修复你的查询和映射,从 2.1 到 3.0 已经发生了很多变化。
  • 你也应该去接受你的问题的一些答案!

标签: nhibernate nhibernate-mapping


【解决方案1】:
  1. 升级到 NH 3.2 时,您不再需要 NHibernate.Linq.dll,用于获得 LINQ 支持的方法名称不是 Linq<T> - 现在是 Query<T>李>
  2. 您无需更改 hbm 文件
  3. 您需要更新 Iesi.Collections 程序集
  4. 您不需要 castle.dynamic 代理 dll(您仍然可以使用它,但不再需要它)
  5. Lo​​g4Net 是not required anymore
  6. 您可能需要将 cfg 文件更改为 change dynamic proxy settings

获取包含所有必需程序集的最新版 NH 的最简单方法是使用 Nuget

【讨论】:

  • 我做到了。它有错误。因为 Nhibernate.linq.dll 与 Nhibernate.dll 不匹配(版本 3.1) 错误消息是:无法加载文件或程序集“NHibernate,版本=2.1.2.4000,文化=中性,PublicKeyToken=aa95f207798dfdb4”或其依赖项之一.找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 例外:0x80131040)我必须升级 Nh 版本 3.1,我需要什么版本的 Nhibernate.linq.dll ?
  • 要么删除 NHibernate.Linq 程序集,要么放置程序集重定向
  • 我又做了一次。但是它有错误。有可能我需要改变的地方吗?
【解决方案2】:

升级 dll 并测试你的程序,通常这就足够了

【讨论】:

  • LINQ 提供程序不是 100% 兼容的。
猜你喜欢
  • 2020-09-22
  • 2021-05-05
  • 2016-11-27
  • 1970-01-01
  • 2017-08-03
  • 1970-01-01
  • 1970-01-01
  • 2017-02-07
  • 1970-01-01
相关资源
最近更新 更多