【问题标题】:Is NHibernate 3.0 built-in Linq provider stable?NHibernate 3.0 内置的 Linq 提供程序是否稳定?
【发布时间】:2010-12-23 09:09:09
【问题描述】:

我能否依赖 NHibernate 3.0 内置的 Linq 提供程序来执行复杂的查询,包含 Max 和 Min 等聚合函数,并包含 Contains、StartsWith 或 EndsWith 等字符串操作??

【问题讨论】:

  • 我不会说这是“稳定性”,而是“完整性”

标签: nhibernate linq-to-nhibernate stability nhibernate-3


【解决方案1】:

我发现的明显问题是:

  1. .OfType() 方法未实现,这可能是继承层次结构的问题。
  2. 不支持左连接
  3. 重要的分组操作不起作用(即使是像按组计数排序这样简单的操作)。
  4. Fetch() 必须是查询中的最后一个方法,这会使关联集合的分页变得困难。

不过,这绝对是对 NHContrib 提供者的改进。

您列出的操作在通常情况下得到很好的支持。

【讨论】:

  • 嘿,你知道二级缓存是否有效吗?我短暂地玩了一下它,但我无法让它工作。我没有尝试的一件事是在查询末尾放置 Cacheable 。此外,如果这样做可以解决问题,那么您可以将 Fetch 与 Cacheable 一起使用。
【解决方案2】:

关于 nhuser 列表的争论很多,因为仍有不少问题悬而未决。

我会查看 nhuser 组和 阅读一些帖子并制作你的 自己的头脑起来。 See here for posts.

就我个人而言,我发现 queryover 可以满足我的所有需求,因此我会等到 Linq 提供程序随着时间的推移变得更加稳定。

我会推荐加入 nhusers 小组以获得更好的感觉。

【讨论】:

  • 非常感谢,但我需要一些比 queryover 更“通用”的查询方法!
【解决方案3】:

LINQ 提供程序比 Ayende 编写的提供程序更加稳定和先进。 (不否认他写的是因为他写的我又拿起了NH)

我认为我在使用 NH Query 时遇到的唯一问题是复合类型。您可以在 EF/L2S 中执行它们,NH3 似乎生成了正确的 sql 但无法执行它。

我个人喜欢 QueryOver,它读起来更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多