急切加载一个集合

时间:2017-10-12 15:10:55

标签: c# nhibernate

请参阅以下代码:

public Person GetById(Guid id)
        {
            return Session.Get<Person>(id);
        }

如何返回急切加载Person.Sports集合的Person?

我尝试过使用QueryOver和Fetch。

1 个答案:

答案 0 :(得分:0)

您可以在映射中指定不应该延迟加载集合,但是,对于要加载Person的每个查询,都将检索该集合。

我确信你可以用QueryOver做到这一点,但我还没有用过它。 您还可以在使用ICriteria方法时指定获取模式:

var crit = session.CreateCriteria<Person>();
crit.SetFetchMode("Sports", FetchMode.Eager);
crit.Add(Restrictions.Eq("PersonId", id);

由于我也想知道如何使用QueryOver,我一直在谷歌搜索,我遇到了this。 您是否尝试过这样的实体:

var query = session.QueryOver<Person>()
                   .Fetch( p => p.Sports).Eager
                   .Left.JoinAlias( p => p.Sports, () => s)
             ...