我有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
构造以生成相同的查询?
答案 0 :(得分:0)
如果你的数据模型是正确的,你只需要做这样的事情
session.QueryOver<Page>()
.Fetch(x => x.Control)
.Eager.List<Page>();
根据许多细节,您可能需要实施ThenFetch
。