我怎样才能急切地获取此查询的数据?

时间:2014-02-13 19:48:55

标签: c# nhibernate

我正试图在此NHibernate查询上急切地获取ActionRoles

menuItems = UnitOfWork.CurrentSession
    .QueryOver<TopMenuItem>()
    .JoinAlias(i => i.Action, () => ua)
    .JoinAlias(() => ua.Roles, () => ro)
    .List();

我看到该查询通过内部联接返回所有必要的数据,但是稍后我访问Roles时,会执行一个新的查询来获取该集合。

OTOH,这个查询很完美,但我想避免使用HQL

menuItems = UnitOfWork.CurrentSession
    .CreateQuery(@"
        from TopMenuItem i 
        join fetch i.Action a
        join fetch a.Roles"
    )
    .List<TopMenuItem>();                    

1 个答案:

答案 0 :(得分:2)

你的联盟需要被正确加载LeftOuterJoins。

menuItems = UnitOfWork.CurrentSession
.QueryOver<TopMenuItem>()
.JoinAlias(i => i.Action, () => ua, JoinType.LeftOuterJoin)
.JoinAlias(() => ua.Roles, () => ro, JoinType.LeftOuterJoin)
.List();