1

フォアキー「ProductID」を持つ「注文」テーブルが1つあります。

パフォーマンスを向上させるためにLazyLoadを使用せずに、 product nameを使用してグリッドに注文を表示したいのですが、DataLoadOptionsを使用すると、すべてのProductフィールドが取得されます。

最初のクエリで製品名のみを取得する方法はありますか? DBML で属性を設定できますか?

このでは、「外部キー値」は Linq To SQL で「可視」であると書かれていますが、これが何を意味するのかわかりません。

編集:解決策がないかどうかよくわからないため、タイトルを変更しました。
誰も同じ問題を抱えていないとは信じられません。これは非常に一般的なシナリオです。

4

3 に答える 3

5

あなたが求めているのは、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 };
于 2008-08-26T22:36:21.467 に答える
0

linq クエリで必要な列のみを選択し、クエリで .ToList() を呼び出すと、すぐに実行され、関心のある列のみが返されます。たとえば、次のようにします。

var q = from p in dataContext.products select p.ProductName;
var results = q.ToList();

結果に格納されている製品名のリストが返されます。クエリがサーバーで実行されると、ProductName 列のみが返されます。

于 2008-08-26T22:11:03.600 に答える
0

私はこの他の質問で解決策を得ます。これは、 liammclennanの回答に関連してますが、より明確です(おそらく質問もより明確でした)

于 2009-01-08T19:21:07.053 に答える