私はこのようなクエリがあります。SQLクエリにLINQを最適化
foreach (var o in FetchLatestOrders(0, 10))
{
Console.WriteLine("{0} {1}", o.Code, o.Customer.Name);
}
はこれが生成します。私は順序の情報と、それを作成したユーザーを印刷する必要が
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();
}
を注文をもたらすためのSQLクエリと、顧客を連れて来るための各注文のための1つのクエリ。 1つのSQLクエリで注文とその顧客をもたらすようにクエリを最適化することは可能ですか?
おかげ
UDPATE:シロッコの提案により、私はこのようなクエリを変更し、それが動作します。選択クエリは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();
}
}
ありがとうございました。
うわー、これは素晴らしかったです。私はこれを実装し、クエリ時間は1.5秒から25秒に短縮されました。 – BastanteCaro
http://stackoverflow.com/questions/11262785/optimizing-repositorys-submitchanges-methodにお答えください。 – Lijo