【问题标题】:Eagerly loading an association after Get()在 Get() 之后急切地加载关联
【发布时间】:2013-02-10 22:05:50
【问题描述】:

我正在尝试找到比这更好的加载关系的方法:

result = session.Get<Author>(id);
Course course = result.Courses.FirstOrDefault();

我可以像这样使用 QueryOver API 做到这一点:

result = session.QueryOver<Author>()
                .Where(item => item.Id == id)
                .Fetch(item => item.Courses).Eager
                .SingleOrDefault();

我猜它会生成相同的 SQL,但它太冗长了。

有没有办法做下面的事情?

session.Fetch(result, author => author.Courses);

【问题讨论】:

    标签: nhibernate nhibernate-3


    【解决方案1】:

    Get 由映射驱动。如果它真的有意义,请更改您的映射(但我不会这样做)。构造映射没有运行时切换。

    根据我的经验,在 Get(id) 期间再添加几个 select 语句不是问题...对于 N + 1,您已经在问题中展示了更好的解决方案。

    关于 eagar 加载的有趣阅读:http://nhforge.org/wikis/howtonh/lazy-loading-eager-loading.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 2018-07-28
      相关资源
      最近更新 更多