Linq To SQL:結合テーブル内の 1 つのフィールドのみを一括ロードできますか?
-
09-06-2019 - |
質問
前キー「ProductID」を持つテーブル「orders」が 1 つあります。
注文をグリッドで表示したいのですが、 商品名, 、 それなし LazyLoad パフォーマンスを向上させるためですが、使用する場合は データロードオプション それは取得します 全て 製品フィールドは、 やりすぎ.
取得する方法はありますか のみ 最初のクエリの製品名?DBML に属性を設定できますか?
この中で テーブル Linq To SQL では「外部キー値」が「表示される」とのことですが、これが何を意味するのかわかりません。
編集:解決策がよくわからないのでタイトルを変更しました。
同じ問題を抱えている人がいないなんて信じられませんが、これは非常に一般的なシナリオです。
解決 3
この他の質問で解決策がわかりました このシナリオに対処できる .net ORM はどれですか, に関連しています。 リアムクレナン 答えはより明確ですが(おそらく質問もより明確でした)
他のヒント
あなたが求めているのは、linq-to-sql では提供されないレベルの最適化です。最善の策は、必要なデータを正確に返すクエリを、おそらく匿名型として作成することだと思います。
from order in DB.GetTable<Orders>()
join product in DB.GetTable<Products>()
on order.ProductID = product.ID
select new { ID = order.ID, Name = order.Name, ProductName = product.Name };
linq クエリで必要な列のみを選択し、クエリで .ToList() を呼び出すと、即座に実行され、関心のある列のみが返されます。たとえば、これを実行すると、次のようになります。
var q = from p in dataContext.products select p.ProductName;
var results = q.ToList();
結果に保存されている製品名のリストが返され、サーバー上でクエリが実行されると、ProductName 列のみが返されます。
所属していません StackOverflow