次のようなクエリがあります。
public IList<Post> FetchLatestOrders(int pageIndex, int recordCount)
{
DatabaseDataContext db = new DatabaseDataContext();
return (from o in db.Orders
orderby o.CreatedDate descending
select o)
.Skip(pageIndex * recordCount)
.Take(recordCount)
.ToList();
}
注文とそれを作成したユーザーの情報を出力する必要があります。
foreach (var o in FetchLatestOrders(0, 10))
{
Console.WriteLine("{0} {1}", o.Code, o.Customer.Name);
}
これにより、注文を持ち込むための SQL クエリと、顧客を持ち込むための注文ごとに 1 つのクエリが生成されます。クエリを最適化して、注文と顧客を 1 つの SQL クエリで取得することはできますか?
ありがとう
UDPATE: sirrocco の提案により、クエリをこのように変更したところ、機能しました。1 つの選択クエリのみが生成されます。
public IList<Post> FetchLatestOrders(int pageIndex, int recordCount)
{
var options = new DataLoadOptions();
options.LoadWith<Post>(o => o.Customer);
using (var db = new DatabaseDataContext())
{
db.LoadOptions = options;
return (from o in db.Orders
orderby o.CreatedDate descending
select o)
.Skip(pageIndex * recordCount)
.Take(recordCount)
.ToList();
}
}
sirocoさん、ありがとうございます。