こんにちは、次の質問があります。データベース内の2つのテーブルがどこにあると仮定します。
Clients(
id,
name,
address)
Orders(
id,
name,
desc,
datemodified,
client_id)
2番目のものは最初のものを参照します。つまり、各注文はクライアントに割り当てられます。ここで、 LinqDataSource for Ordersテーブルを含む.aspxページと、このデータソースを使用して次の列を持つテーブルを表示するGridViewがあるとします。
- 注文名。
- 注文説明
- クライアント名。
- クライアントアドレス。
私が理解している限り、Linq to SQLは、デフォルトでは関連するエンティティをロードせず、子プロパティが要求された場合にのみロードするように設計されています。したがって、ページが読み込まれると、次の状況が発生します。
- 最初のクエリは、Ordersテーブルからレコードを取得します。
- GridViewによって表示される行ごとに、クライアントプロパティの1つが要求されたときに、追加のクエリが実行されます。
したがって、100の注文がある場合、これは1つではなく101のクエリを実行することを意味します(または、クエリが各クライアントプロパティに対して実行される場合は、201のクエリを実行することもあります)。これを回避し、LinqDataSourceに単一のクエリですべての必須フィールドをロードさせる方法は?
現在、この問題の唯一の回避策があります。結合クエリでSqlDataSourceを使用すると、必要なすべてのフィールドが一度に取得されます。