【问题标题】:Is there any work-around for NHibernate-to-LINQ not supporting subqueries?对于不支持子查询的 NHibernate-to-LINQ 是否有任何解决方法?
【发布时间】:2010-03-02 09:20:14
【问题描述】:

我知道 LINQ-to-NHibernate 目前不支持子查询 (http://ayende.com/Blog/archive/2009/07/26/nhibernate-linq-1.0-released.aspx)。

有什么解决办法吗?

【问题讨论】:

    标签: c# linq nhibernate linq-to-nhibernate


    【解决方案1】:

    linq-to-nh 支持 where 子句中的子查询。这正是我需要的东西。我之前的回答错了。 martijnboland 和 Stefan Steinegger 都是对的。要了解如何在 linq-to-nh 中进行子查询,请参阅 thisthis。还有limitations

    【讨论】:

      【解决方案2】:

      我认为解决方法只是使用 HQL 或 Criteria。

      【讨论】:

      • 不幸的是,Criteria 也不支持子查询。事实上,LINQ-to-NHibernate 是基于 ICriteria 的,而这种缺陷源于 ICriteria 本身。
      • 标准是否支持子查询。它使用DetachedCriteria 构建并添加.Add(Subqueries.Blah(subquery))(其中BlahExistsPropertyIn 或类似的东西)
      • 经过很长时间,我确信您是对的。对不起!
      【解决方案3】:

      我没有使用过 nhibernate to linq,但我相信您几乎可以将任何子查询转换为连接

      【讨论】:

      • 不幸的是它也不支持连接!
      • 请注意,select 中的子查询和 where 子句中的子查询之间存在差异:where 子句中的子查询受支持并且工作正常(Any()、Count() 等)
      • 亲爱的martijn,我将使用“选择子查询”
      • @martijn,经过很长时间我意识到我需要的子查询是where子句中的子查询。你是对的。
      【解决方案4】:

      我已使用两部分 LINQ 查询作为解决方法。用于不相关子查询部分的 LINQ-to-NHibernate 和用于查询的子查询相关部分的 LINQ-to-Object。详情请见http://afsharm.blogspot.com/2010/03/dealing-with-subqueries-in-linq-to.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-13
        • 2011-10-15
        • 1970-01-01
        • 2010-09-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多