Linq技巧3——何时及怎么使用预先加载
2013-10-29 14:40
183 查看
通常情况在你的应用程序中,一旦你要查询完数据的的时候,你知道使用实体来做什么。
假如你打印一份订单给顾客,你知道不包括组成订单的Items和Products信息,打印的信息是不完整的,所以查询时也需要加载这些信息。
这类情况,查询时使用预先加载是很有用的。如果你需要额外的信息、实体,你可能需要提前加载这些实体数据,这会节省你的查询次数。
正好与一些错误的观点相反,使用EF进行预先加载是可行的,而且比较方便,你可以简单地使用Include()来写自己的查询,像下面的方式:
这条查询语句的意思是,这条顾客的订单包括它们的“明细”,每条“明细”又包括它们的“产品”信息。
结果的执行语句,不需要再做过多的查询,如下:
备注:
这样查询不需要明确再使用Include("Items"),Include("Items.Product")的使用明确地包括了“Items”。
假如你打印一份订单给顾客,你知道不包括组成订单的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”。
相关文章推荐
- Entity Framework 4 in Action读书笔记——第四章:使用LINQ to Entities查询:预先加载和延迟加载
- Entity Framework 4 in Action读书笔记——第四章:使用LINQ to Entities查询:预先加载和延迟加载
- 使用Html.fromHtml()怎么加载Html中的图片
- [jQuery代码]如何使用javascript/jQuery预先加载图片
- 使用LinqToSql加载动态column
- vs2008 使用LINQ来简化编程的7个技巧
- 离合器怎么踩 离合器的使用技巧
- 不继承 IEnumerable 或 IQueryable 的类型怎么使用 LINQ 查询
- Linq使用技巧及查询示例(一)
- iPhone使用技巧:苹果手机微信聊天记录删除了怎么恢复
- [转]使用LINQ来简化编程的7个技巧
- 基于Android ListView之加载使用技巧
- [jQuery代码]如何使用javascript/jQuery预先加载图片
- Word丢失文件怎么恢复?使用Word这些技巧你要了解
- 【React Native开发】 - Image的加载技巧与使用
- 【Android】56、动态加载布局的技巧——使用最小宽度限定符
- 使用LINQ来简化编程的7个技巧
- UIWebView的一些使用技巧(手势缩放字体、先加载文本再load图片、实现@变色的UITextView等)
- [jQuery代码]如何使用javascript/jQuery预先加载图片
- Android不使用图片框架,实现加载类似微博超长图片的技巧手法;