【问题标题】:NHibernate join subqueryNHibernate 连接子查询
【发布时间】:2014-03-20 09:18:42
【问题描述】:

我有 3 个简单的表(实体):Page (id)Control (id, page_id)Setting (id, control_id)。 所以结构是Page->Control->Setting

我有疑问:

SELECT
p.*
,c.*
,s.*
FROM #page p
LEFT JOIN ( SELECT * FROM #control WHERE id = @controlid) c ON p.id = c.page_id
LEFT JOIN ( SELECT * FROM #settings WHERE id = @settingid) s ON s.id = c.page_id
WHERE
p.id = @pageid

如何构建NHibernate构造来生成相同的查询?

【问题讨论】:

  • 你试过什么?
  • @EricHerlitz 我什至不知道该怎么做:.JoinQueryOver(subQuery)。
  • 为了成功,您必须构建支持数据模型的对象和映射,您这样做了吗?在这种情况下,请发布代码。
  • @EricHerlitz 当然所有的东西都完成了,映射等等。我在问如何构建查询
  • 您不能使用 QueryOver 连接到任意派生表。您必须使用 HQL 或 SQL。

标签: c# sql nhibernate


【解决方案1】:

如果你的数据模型是正确的,你只需要做这样的事情

session.QueryOver<Page>()
    .Fetch(x => x.Control)
    .Eager.List<Page>();

根据很多细节,您可能必须实现ThenFetch

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-15
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多