LINQ – 使用DataLoadOptions 提高LINQ to SQL 查询性能
EntLib.com开源小组发表,http://www.EntLib.com,2008-7-2
LINQ to SQL 提供了 DataLoadOptions用于立即加载对象,避免往返访问数据库,提高查询性能。方法包括:
LoadWith 方法,用于立即加载与主目标相关的数据。
AssociateWith 方法,用于筛选为特定关系检索到的对象。
如下LINQ to SQL代码示例:
            OrderDataContext orderDC;
            orderDC = new OrderDataContext();
            orderDC.Log = Console.Out;
            DataLoadOptions dataLoadOption = new DataLoadOptions();
            dataLoadOption.LoadWith<Order>(r => r.Order_Details);
            orderDC.LoadOptions = dataLoadOption;
            var query = from ord in orderDC.Orders
                        select ord;
            grdOrder.DataSource = query;
            grdOrderDetail.DataSource = grdOrder.DataSource;
            grdOrderDetail.DataMember = "Order_Details";
通过使用LoadWith 方法指定应同时检索与主目标Order相关的Order Detail 数据,这样后续的查询方法仅访问一次数据库,并可同时获取Order、Order Detail 的所有信息。
如下是输出的SQL脚本:
SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t0].[RequiredDate], [t0].[ShippedDate], [t0].[ShipVia], [t0].[Freight], [t0].[ShipName], [t0].[ShipAddress], [t0].[ShipCity], [t0].[ShipRegion], [t0].[ShipPostalCode], [t0].[ShipCountry], [t1].[OrderID] AS [OrderID2], [t1].[ProductID], [t1].[UnitPrice], [t1].[Quantity], [t1].[Discount], (
    SELECT COUNT(*)
    FROM [dbo].[Order Details] AS [t2]
    WHERE [t2].[OrderID] = [t0].[OrderID]
    ) AS [value]
FROM [dbo].[Orders] AS [t0]
LEFT OUTER JOIN [dbo].[Order Details] AS [t1] ON [t1].[OrderID] = [t0].[OrderID]
ORDER BY [t0].[OrderID], [t1].[ProductID]
使用 AssociateWith 方法指定子查询以限制检索的数据量。
在下面的示例中,AssociateWith 方法将检索的 Orders 限制为当天尚未装运的那些 Orders。如果没有此方法,则会检索所有 Orders,即使只需要一个子集。
DataLoadOptions dlo = new DataLoadOptions();
dlo.AssociateWith<Customer>(c => c.Orders.Where(p => p.ShippedDate != DateTime.Today));
db.LoadOptions = dlo;
var custOrderQuery =
from cust in db.Customers
where cust.City == "London"
select cust;

转载于:https://www.cnblogs.com/entlibforum/archive/2008/07/02/1233796.html

LINQ – 使用DataLoadOptions 提高LINQ to SQL 查询性能相关推荐

  1. execution 排除_使用SQL Server 2016 Live Execution统计信息对SQL查询性能进行故障排除

    execution 排除 SQL Server Management Studio a graphical interactive that allows you to interact with t ...

  2. SQL Server-聚焦sp_executesql执行动态SQL查询性能真的比exec好?

    前言 之前我们已经讨论过动态SQL查询呢?这里为何再来探讨一番呢?因为其中还是存在一定问题,如标题所言,很多面试题也好或者有些博客也好都在说在执行动态SQL查询时sp_executesql的性能比ex ...

  3. 五个 SQL 查询性能测试题,只有 40% 及格率,你敢来挑战吗?

    作者 | 董旭阳TonyDong,CSDN 博客专家 责编 | 唐小引 头图 | CSDN 下载自东方 IC 出品 | CSDN 博客 下面是 5 个关于索引和 SQL 查询性能的测试题:其中 4 个 ...

  4. oracle function 写查询语句_五个 SQL 查询性能测试题,只有 40% 及格率,你敢来挑战吗?...

    作者 | 董旭阳TonyDong,CSDN 博客专家 责编 | 唐小引 头图 | CSDN 下载自东方 IC 出品 | CSDN 博客 下面是 5 个关于索引和 SQL 查询性能的测试题:其中 4 个 ...

  5. t–sql pl–sql_糟糕SQL查询设计– SQL查询性能的杀手–基本知识

    t–sql pl–sql Depending on the performance problem cause, fixing poor SQL query design can be quick o ...

  6. 预编译sql查询语句_频繁查询重新编译– SQL查询性能杀手–检测

    预编译sql查询语句 previous part of this article, we presented query recompilation basics. We explained when ...

  7. 五个 SQL 查询性能测试题,只有 40% 及格率,你敢来挑战吗?| 原力计划

    作者 | 董旭阳TonyDong,CSDN 博客专家 责编 | 唐小引 头图 | CSDN 下载自东方 IC 出品 | CSDN 博客 下面是 5 个关于索引和 SQL 查询性能的测试题:其中 4 个 ...

  8. mysql及格率70以上_五个 SQL 查询性能测试题,只有 40% 及格率,你敢来挑战吗?| 原力计划...

    作者 | 董旭阳TonyDong,CSDN 博客专家 责编 | 唐小引 头图 | CSDN 下载自东方 IC 出品 | CSDN 博客 下面是 5 个关于索引和 SQL 查询性能的测试题:其中 4 个 ...

  9. sql 查询数据库索引重建_不良的数据库索引– SQL查询性能的杀手–建议

    sql 查询数据库索引重建 previous article, we explained what clustered and nonclustered indexes were, and showe ...

最新文章

  1. android 组装xml,Android中组装xml文件内容
  2. ORA-00907: 缺失右括号问题整理解决
  3. AbstractQueuedSynchronizer 原理分析 - 独占/共享模式
  4. C++ Primer 5th笔记(chap 15 OOP)抽象基类
  5. 微软论文解读:用于视觉对话的多步双重注意力模型
  6. .NET实现之(部署ActiveX控件—简)
  7. 数据结构 - 二叉树
  8. 大数据系统软件创新平台与生态建设
  9. WPF 虚拟化 VirtualizingWrapPanel 和 VirtualLizingTilePanel
  10. 在 Keras 中为循环神经网络添加自定义注意层
  11. 计算机组成原理经典试卷
  12. Excel——公式与函数基础
  13. android显示缩略图,Android:是否可以显示视频缩略图?
  14. 虚拟主播?这个项目,我能玩一年!
  15. Transact-SQL
  16. 记录下我磕磕碰碰的三个月找工作经历,好文推荐
  17. 如何保持积极的心态?
  18. Statement和PreStatement的区别 以及 #{}和${}的区别
  19. 从零开始的MySQL教程——上
  20. ps中常用模糊的区别

热门文章

  1. 自动驾驶横向运动学分析和非线性问题处理方法
  2. 游戏会记录某个api的调用_专家坐诊丨老出BUG怎么办?游戏服务器常见问题的解决方法分享...
  3. 图像处理-空间域锐化滤波
  4. macOS清理内存空间的其他other
  5. 华为认证HCNA-IoT物联网工程师培训视频
  6. 数组对象的reduce方法
  7. JQuery的 serializeObject 序列化form表单
  8. MongoDB语法学习
  9. 第一部分:MongoDB备忘录
  10. POJ 1417 True Liars 并查集+背包