gpt4 book ai didi

NHibernate Eager 加载多级子对象

转载 作者:行者123 更新时间:2023-12-03 10:42:01 28 4
gpt4 key购买 nike

我有一个对象层次结构,订单,联系人,地址:

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);
}

如何构造一个标准对象来加载 child 的 child ?这些关系映射看起来正确吗?

最佳答案

我相信您可能需要为 BillingContact 添加一个别名以允许您访问它的地址。

就像是:

var criteria = DetachedCriteria.For<Order>()
.CreateAlias("BillingContact", "bc")
.SetFetchMode("BillingContact", FetchMode.Eager)
.SetFetchMode("bc.Address", FetchMode.Eager)

关于NHibernate Eager 加载多级子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/563250/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com