流畅的NHibernate和懒惰的负载

时间:2012-05-28 12:47:51

标签: c# .net session fluent-nhibernate lazy-loading

我对延迟加载有一些疑问

当我映射我的对象时,我在我的应用程序中的任何地方都写了.Not.LazyLoad()并且它运行良好。但我有一些问题。
示例:我有一个班级User。它具有属性NameComments。在Comments中映射User

HasMany(x => x.Comments).KeyColumn("UserId").Not.LazyLoad();

哪种方法效果很好,但无论我在哪里加载UserComments都会加载它,这很糟糕...加载示例User

var user = session.Get<User>(1);

如果用户有很多评论我的应用程序运行不好...
问题是如何在需要时启用LazyLoad?或者,如果我不写.Not.LazyLoad()

,如何禁用延迟加载

1 个答案:

答案 0 :(得分:4)

我找到了问题的答案。
如果不写任何地方.Not.LazyLoad()并且需要获取Comments,则必须写这个(获取id = 1的用户):

var user = session.QueryOver<User>()
                  .Fetch(u => u.Comments)
                  .Eager
                  .List()
                  .Where(u => u.Id == userId)
                  .FirstOrDefault();

或者,你需要什么。