用于从不同表中进行选择的nhibernate标准
我有以下表格模型:
我希望以下SQL命令作为nhibernate标准:
SELECT * FROM单位WHERE OID IN(选择OID来自订单WHERE PONumber 0 ORDER BY PONumber LIMIT 5)
– >换句话说:最后5个订单
编辑:
我的映射
Unit.hbm.xml
Order.hbm.xml
Employee.hbm.xml
EDIT2:
这是我的查询命令:
var query = m_hibernateSession.QueryOver(() => orderAlias) .JoinAlias(() => orderAlias.ID, () => unitAlias, JoinType.InnerJoin) .TransformUsing(Transformers.DistinctRootEntity) .OrderBy(x => x.PONumber).Desc.Take(5);
谢谢
如果你想要最后五个订单,我会用稍微不同的查询来解决问题
Select * From order o join Units U on O.OID = U.OID Order by O.PONumber limit 5
在nhibernate会是这样的(未经测试)
Order orderAlias = null; Unit unitAlias = null; var query = session.QueryOver(() => orderAlias) .JoinAlias(() => orderAlias.Units, () => unitAlias, JoinType.InnerJoin) //.TransformUsing(Transformers.DistinctRootEntity) if you have duplicates .OrderBy(x => x.PONumber).Desc.Take(5);
UPDATE
您也可以只加载Order
实体。 NHibernate将根据您的映射信息(延迟/急切加载或连接)自动加载所有单位行。
var query = session.QueryOver().OrderBy(x => x.PONumber).Desc.Take(5);