Linq To SQL:結合テーブル内の 1 つのフィールドのみを一括ロードできますか?

StackOverflow https://stackoverflow.com/questions/29040

質問

前キー「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 列のみが返されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top