我有一个关联实体<many-to-one>
,该实体有两个<many-to-one>
,我想一次获取。我可以通过此查询实现此目的:
var tshead = session.Query<MainEntity>()
.Fetch(r=>r.FirstAssoc).ThenFetch(p=>p.Other)
.Fetch(r=>r.FirstAssoc).ThenFetch(p=>p.Another)
.Take(10)
.ToList();
如您所见,我必须写两次.Fetch(r=>r.FirstAssoc)
我相信我可以避免这种情况,但我无法弄清楚如何。有什么想法吗?
谢谢!
答案 0 :(得分:3)
如果你选择一个特定的'MainEntity',你可以使用QueryOver这样做:
FirstAssoc firstAssoc = null;
Other other = null;
Another another = null;
tshead = session.QueryOver<MainEntity>()
.Where(x => x.Id == id)
.JoinAlias(x => x.FirstAssoc, () => firstAssoc)
.JoinAlias(() => firstAssoc.Other, () => other)
.JoinAlias(() => firstAssoc.Another, () => another)
.SingleOrDefault();
我在这里写过:
http://www.philliphaydon.com/2011/04/nhibernate-querying-relationships-are-depth/
你做不到:
一多对多
仅 One-Many-One 。
我不确定你能做 Many-Many-One ,转换太难了。