我有一个看起来像这样的查询:
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 查询来带来订单,并为每个订单生成一个查询来带来客户。是否可以优化查询,以便在一个 SQL 查询中带来订单和客户?
谢谢
UDPATE:根据 Sirrocco 的建议,我更改了这样的查询并且它有效。只生成一个选择查询:
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();
}
}
谢谢西洛克。