【问题标题】:Fluent NHibernate and lazy load流畅的 NHibernate 和延迟加载
【发布时间】:2012-05-28 22:04:39
【问题描述】:

我有一些关于延迟加载的问题

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

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

这很好用,但是在我加载UserComments 的任何地方都加载了它,这很糟糕......加载User 的示例:

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

如果用户有很多 cmets,我的应用程序运行不佳...
问题是如果需要我如何启用 LazyLoad?或者如果我不写.Not.LazyLoad(),如何禁用延迟加载?

【问题讨论】:

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


    【解决方案1】:

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

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

    或者,你需要什么。

    【讨论】:

    • 原因是 - 如果某些东西是延迟加载的......你需要在需要时急切地获取它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    相关资源
    最近更新 更多