急切地加载集合
问题描述:
请参阅下面的代码:急切地加载集合
public Person GetById(Guid id)
{
return Session.Get<Person>(id);
}
我怎样才能返回具有Person.Sports收集即时加载一个人?
我试过使用QueryOver和Fetch。
答
您可以在映射中指定集合不应该被延迟加载,但是,那么将为每个要加载Person的查询检索该集合。
我相信你可以用QueryOver做到这一点,但我还没有用过。 使用的ICriteria方法时,您还可以指定抓取模式:
var crit = session.CreateCriteria<Person>();
crit.SetFetchMode("Sports", FetchMode.Eager);
crit.Add(Restrictions.Eq("PersonId", id);
因为我想知道如何使用QueryOver还有,我一直在google搜索了一下,以做到这一点,我遇到this来了。 您是否试图获取这样的实体:
var query = session.QueryOver<Person>()
.Fetch(p => p.Sports).Eager
.Left.JoinAlias(p => p.Sports,() => s)
...