【问题标题】:Fluent NHibernate Linq Complex Component Eager LoadingFluent NHibernate Linq 复杂组件急切加载
【发布时间】:2011-07-13 12:46:35
【问题描述】:

我们在旧数据库项目中使用 Fluent NHibernate LINQ。 我们的场景是我们有一个带有地址的客户信息表。 我们在 C# 中将 Customer 和 Address 创建为单独的实体。地址再次引用邮政编码对象。

在映射时,我们将地址映射为客户的组件。现在我想在获取客户时急切加载邮政编码(由地址引用),以避免 N+1 选择。

当我尝试写Fetch(customer => customer.Address.ZipCode) 时,它说它太复杂了。我不能这样做Fetch(customer => customer.Address).ThenFetch(address => address.ZipCode),因为地址与客户存储在同一个表中。

有什么办法可以解决这个问题吗?

【问题讨论】:

    标签: nhibernate components loading eager


    【解决方案1】:

    不幸的是,Linq-provider 似乎无法处理这种情况。因此,您要么使用条件,要么使用 QueryOver API

    session.CreateCriteria<Customer>()
        .SetFetchMode("Address.ZipCode", FetchMode.Eager)
        .List();
    
    session.QueryOver<Customer>()
        .Fetch(u => u.Address.ZipCode).Eager
        .List();
    

    或者在 Mappings 中禁用 ZipCode 的 LazyLoading

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 2012-02-13
      相关资源
      最近更新 更多