Linq2Sql (私の顧客は 3.5 に固執しているため、エンティティ フレームワークに移行できません) を使用して SQL Server DB にアクセスしています。
場合によってはパフォーマンスを向上させるために、コンテキストに LoadOptions を追加しました。コンパイルされたクエリを使用しているため、無効にすることはできません。また、それらが役に立たず、リクエストが遅くなった場合も同様です。
しかし、コンテキストに LoadOptions が追加されていない場合とまったく同じように、データを取得したい場合があります。
回避策として、完全なレコードではなく、その投影を返すようにしました。
例 :
DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Product>(c => c.X);
dlo.LoadWith<Product>(c => c.Y);
context.LoadOptions = dlo;
return (from product in context.Products
where ...
select product).First();
これは次のようなクエリを実行します。
Select product.*, X.*, Y.* from Product Left outer join X left outer join Y where....
この場合、すべてが完全に正常です。
私のアプローチは次のようなものに依存しています:
return (from product in context.Products
where ...
select new MyType() { p = product.Field }).First();
のようなクエリを実行します
Select product.Field from Product ->Left outer join X left outer join
Y<-- where....
リクエストの LEFT OUTER JOIN に注意してください。
私は次のようなものを期待していましたが:
Select product.Field from Product where....
これらの結合を回避する方法があるかどうか知りたいですか?
アドバイス、どうもありがとうございました