FluentNHibernate:LazyLoad和Fetch

时间:2012-05-23 10:14:00

标签: nhibernate fluent-nhibernate

在流畅的nhibernate中,我可以将Fetch.Something和Not.LazyLoad设置为Reference或HasMany。如果我同时使用它们会发生什么?

这两种方式如何反映以这三种方式查询数据?

class UserMap
{
   HasMany(x=>x.Contacts). (Fetch or Not.LazyLoad)
   References(x=>x.Supervisor). (Fetch or Not.LazyLoad)
}

session.Query<User>();
session.Query<User>().FetchMany(x=>x.Contacts);
session.Get<User>(ID);

1 个答案:

答案 0 :(得分:3)

问题是Query / HQL没有考虑Fetch。因此,在运行查询后,它会立即尝试逐个获取Not.LazyLoad属性

通常,在99%的情况下禁用延迟加载是一个坏主意。建议阅读:NHibernate is lazy, just live with it