(六)高效合理的使用LINQ

1、DataContext中的两个属性

为了能够使用DataContext进行数据提交,在DataContext进行数据查询和操作的过程中,内部会进行数据状态的保持和追踪,这会带来一些额外的开销。如果用户仅需要进行数据读取的话,可以通过将DataContext的ObjectTrackingEnabled属性设为false(默认值为true)来避免这些维护数据状态带来的额外开销。

此外,在DataContext中还有一个DefferedLoadingEnabled属性,用于控制数据实体之间的引用(对应到SharePoint列表中即查阅项)是否加载。如果将此属性设置为false(默认值为true),那么在返回结果之后,所有的查阅项引用都不会加载,值为null。因此,如果不需要使用其中查阅项类型内容的话,可以将此属性设置为false,可以进一步提高查询速度。

2、LINQ中的运算

在针对其他数据源进行查询的时候,LINQ可以进行多种运算,但是由于在SharePoint中,查询最终是使用CAML进行的,因此有些运算在LINQ to SharePoint中是不支持的,或者在执行效率上有所区别。

高效查询(Efficient Queries)

在LINQ to SharePoint中,凡是可以直接被转换成CAML查询的LINQ查询,都被称为高效查询。系统会将CAML查询的结果直接转换成相应的数据实体。

不支持的查询

在LINQ中,不支持查询嵌套,即将一个查询的结果作为另外一个查询的查询条件(在传统的T-SQL中,也就是select语句的嵌套)。

此外,在LINQ to SharePoint中,对两个查询结果的集合操作也是不被支持的,例如下面的程序会抛出异常:

in ctx.InteralOrder
   2:               select o;
in ctx.ExternalOrder
   4:               select o;
// Exception Here!

相关文章:

  • 2021-08-16
  • 2022-02-08
  • 2021-08-13
  • 2021-08-05
  • 2021-08-14
  • 2022-01-11
  • 2021-10-22
  • 2021-05-31
猜你喜欢
  • 2021-06-03
  • 2022-02-05
  • 2022-02-17
  • 2021-09-15
  • 2021-09-28
  • 2021-07-03
  • 2021-07-08
相关资源
相似解决方案