NHIbernate获取返回多个父对象

时间:2011-08-12 11:06:22

标签: nhibernate

任何人都可以解释为什么这个查询将返回12家公司(它有12个UserAccessList子级)

var list = session.QueryOver<Company>()
        .Where(x => x.Id == 1) //x => x.Id.IsIn(ids))
        .Fetch(l => l.UserAccessList).Eager()
        .List<Company>();

2 个答案:

答案 0 :(得分:2)

因为在SQL中它会像:

select * from 
Companies c left outer join UserAccessLists uac on c.Id == uac.CompanyId
where c.id = id

它在结果中给出重复。如何解决此类问题,您可以阅读here

答案 1 :(得分:1)

这也有效

var c = session.QueryOver<Company>()
        .Future();

 session.QueryOver<Company>()
        .Fetch(l => l.UserAccessList).Eager()
        .Future();

var list = c.ToList();