参照ドキュメントを含めて往復を避けるために、次のサンプル コードを検討しています。
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);
私の質問は、レイヴンはこれがドキュメント/コレクションをo=>o.CustomerId
意味することをどのように知っているのでしょうか? エンティティを取得するためのクエリでCustomer
エンティティが提供されたことは一度もありませんでした。それでも、Raven は、取得する 2 番目のクエリは、ネットワーク トリップなしでキャッシュに対して実行できると主張しています。Customer
Order
Customer
採用するのが非常に貧弱/壊れやすい/脆弱な規則のように思われる命名規則によるものである場合、複数のドキュメントを含める必要がある場合はどうなりますか?
例えば。車は 2 人の名前で購入されたので、2 人の顧客 (1 番目と 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 はこれが 1 つの同じテーブルへの参照でo=>o.PrimaryCustomerId
あることをどのように知るのでしょうか?o=>o.SecondaryCustomerId
Customer