我们在项目中使用Fluent NHibernate LINQ和遗留数据库。 我们的场景是我们有一个表格,其中包含客户信息和地址。 我们在C#中将Customer和Address创建为单独的实体。地址再次引用邮政编码对象。
在映射时,我们将Address映射为Customer的Component。现在我想在提取Customer时急切加载Zip Code(由Address引用),以避免N + 1选择。
当我尝试写Fetch(customer => customer.Address.ZipCode)
时,它说太复杂了。我不能Fetch(customer => customer.Address).ThenFetch(address => address.ZipCode)
,因为地址与客户存储在同一个表中。
有什么方法可以解决这个问题吗?
答案 0 :(得分:2)
session.CreateCriteria<Customer>()
.SetFetchMode("Address.ZipCode", FetchMode.Eager)
.List();
session.QueryOver<Customer>()
.Fetch(u => u.Address.ZipCode).Eager
.List();
或者在Mappings中禁用ZipCode的LazyLoading