ThenFetch中的多次提取

时间:2011-10-21 10:00:52

标签: nhibernate linq-to-nhibernate

我有一个关联实体<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) 我相信我可以避免这种情况,但我无法弄清楚如何。有什么想法吗?

谢谢!

1 个答案:

答案 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 ,转换太难了。