Linq技巧3——何时及怎么使用预先加载_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > Linq技巧3——何时及怎么使用预先加载

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

 2013/10/29 16:00:50  欣静赏悦  博客园  我要评论(0)
  • 摘要:通常情况在你的应用程序中,一旦你要查询完数据的的时候,你知道使用实体来做什么。假如你打印一份订单给顾客,你知道不包括组成订单的Items和Products信息,打印的信息是不完整的,所以查询时也需要加载这些信息。这类情况,查询时使用预先加载是很有用的。如果你需要额外的信息、实体,你可能需要提前加载这些实体数据,这会节省你的查询次数。正好与一些错误的观点相反,使用EF进行预先加载是可行的,而且比较方便,你可以简单地使用Include()来写自己的查询,像下面的方式:varreprint=
  • 标签:使用 技巧

  通常情况在你的应用程序中,一旦你要查询完数据的的时候,你知道使用实体来做什么。

  假如你打印一份订单给顾客,你知道不包括组成订单的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”。

 

 

 

发表评论
用户名: 匿名