我正在查看以下示例代码以包含参考文档并避免往返。
var order = session.Query<Order>()
.Customize(x => x.Include<Order>(o=>o.CustomerId)) // Load also the costumer
.First();
var customer = session.Load<Customer>(order.CustomerId);
我的问题是 Raven 如何知道这o=>o.CustomerId
意味着Customer
文档/收藏?查询中从未Customer
提供实体以获取Order
实体。然而,Raven 声称第二个查询Customer
可以针对缓存完成,无需任何网络行程。
如果是通过命名约定,这似乎是一个非常糟糕/脆弱/脆弱的约定,当我需要包含多个文档时会发生什么?
例如。一辆汽车是以 2 个名字购买的,所以我想链接回 2 个客户,主要和次要客户/司机。它们都存储在 Customer 集合中。
var sale = session.Query<Sale>()
.Customize(x => x.Include<Sale>(o=>o.PrimaryCustomerId).Include<Sale>(o=>o.SecondaryCustomerId)) // Load also the costumer
.First();
var primaryCustomer = session.Load<Customer>(order.PrimaryCustomerId);
var secondaryCustomer = session.Load<Customer>(order.SecondaryCustomerId);
如何在 1 次网络旅行中完成上述操作?Raven 怎么会知道这是对o=>o.PrimaryCustomerId
同o=>o.SecondaryCustomerId
一张表的引用,Customer
因为显然属性名称和集合名称没有对齐?