您的位置:首页 > 其它

Linq技巧3——何时及怎么使用预先加载

2013-10-29 14:40 183 查看
  通常情况在你的应用程序中,一旦你要查询完数据的的时候,你知道使用实体来做什么。

  假如你打印一份订单给顾客,你知道不包括组成订单的Items和Products信息,打印的信息是不完整的,所以查询时也需要加载这些信息。

  这类情况,查询时使用预先加载是很有用的。如果你需要额外的信息、实体,你可能需要提前加载这些实体数据,这会节省你的查询次数。

  正好与一些错误的观点相反,使用EF进行预先加载是可行的,而且比较方便,你可以简单地使用Include()来写自己的查询,像下面的方式:  

var reprint = (from order in ctx.Orders.Include("Items.Product")
where order.Customer.Name == "Fred Blogs"
&& order.Status == "Unshipped"
select order).First();


  这条查询语句的意思是,这条顾客的订单包括它们的“明细”,每条“明细”又包括它们的“产品”信息。

  结果的执行语句,不需要再做过多的查询,如下:  

foreach (var item in reprint.Items)
{
Console.WriteLine("\t{0} {1} = ${2}",
item.Quantity,
item.Product.Name,
item.Cost);
}
Console.WriteLine(reprint.TotalCost);


  备注:

  这样查询不需要明确再使用Include("Items"),Include("Items.Product")的使用明确地包括了“Items”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: