0

LoadWithおよびAssociateWithDataLoadOptionsを使用して、エンティティとその関連プロパティ(基本的な1対多)を熱心にロードしようとしています。ただし、生成されたSQLを確認したところ、LoadWithによって生成されたステートメントはすべて左外部結合であることがわかりました。

したがって、以下のコードは、関連するプロパティのデータをフェッチするために、すべての左外部結合を生成します。何故ですか?そして、代わりにLoadWithを取得して内部結合を生成する方法はありますか。単純な「Linq結合」でこれを実行できることはわかっていますが、LoadWith構文がいかにクリーンで単純であるかが気に入っています。前もって感謝します

dataLoadOptions.LoadWith(Of TCustomer)(Function(c) c.Orders)
dataLoadOptions.LoadWith(Of TOrder)(Function(o) o.Products)
dataLoadOptions.LoadWith(Of TProduct)(Function(p) p.ProductTranslations)
dataLoadOptions.AssociateWith(Of TProduct)(Function(c) c.ProductTranslations.Where(Function(t) t.Language = "En"))
4

1 に答える 1

0

英語の製品翻訳が存在するすべてのお客様の注文

dataLoadOptions.AssociateWith<TCustomer>(c => c.Orders
  .Where(o => o.Products
      .SelectMany(p => p.ProductTranslations)
      .Any(pt => pt.Language == "En")
  )
);
于 2010-08-04T14:46:54.830 に答える