Linq技巧3——何时及怎么使用预先加载
2024-09-01 04:07:02
通常情况在你的应用程序中,一旦你要查询完数据的的时候,你知道使用实体来做什么。
假如你打印一份订单给顾客,你知道不包括组成订单的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”。
最新文章
- 机器学习&;深度学习资料
- 24.Redis2.8主从集群sentinel
- 四、解决MyEclipse控制台输出中文乱码的问题
- CQRS及.NET中的参考资料
- android的原理,为什么不需要手动关闭程序
- 通过jersey-client客户端调用Jersey的Web服务模拟CURD
- Fetching data with Ajax小例子
- L​i​n​u​x​下​配​置​T​o​m​c​a​t
- TeamCity Agent安装
- mysql的基础用法,水一下
- 06-HTML-表格标签
- PHP的swoole框架/扩展socket聊天示例
- JPA唯一索引更新删除的问题
- python-web开发环境搭建
- spring多个AOP执行先后顺序(面试问题:怎么控制多个aop的执行循序)
- 关于 cxGrid 的过滤问题
- SACD ISO镜像中提取DSDIFF(DFF)、DSF文件
- windows下面使用nginx配置web注意问题
- [HNOI 2018]寻宝游戏
- 洛咕 P3961 [TJOI2013]黄金矿工