NHibernate加入子查询

时间:2014-03-20 09:18:43

标签: c# sql nhibernate

我有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构造以生成相同的查询?

1 个答案:

答案 0 :(得分:0)

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

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

根据许多细节,您可能需要实施ThenFetch