我有一个对象层次结构,订单,联系人,地址:
public class Order {
public virtual Contact BillingContact { get; set; }
}
public class Contact {
public virtual Address Address { get; set; }
}
我想通过 id 查询订单,并急切地加载 billingcontact 及其地址。
var criteria = DetachedCriteria.For<Order>()
.SetFetchMode("BillingContact", FetchMode.Eager)
这个标准急切地加载了 BillingContact,但可以理解的是不加载 BillingContact 的地址。如果我添加:
.SetFetchMode("BillingContact.Address", FetchMode.Eager)
这无济于事。
另请注意,这些关系是单向的:
public OrderMap()
{
References(x => x.BillingContact)
.Not.Nullable()
.Cascade.All();
}
public ContactMap()
{
HasOne(x => x.Address)
.Cascade.All()
.FetchType.Join();
}
public AddressMap()
{
Map(x => x.Address1);
}
如何构造一个将加载孩子的孩子的标准对象?这些关系映射看起来正确吗?