首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sharepoint - LINQ vs Direct SPQuery

Sharepoint - LINQ vs Direct SPQuery
EN

Stack Overflow用户
提问于 2011-07-25 16:28:39
回答 2查看 1.6K关注 0票数 1

我正在尝试寻找一种优化的方法来处理LINQ查询,而不是为select语句调用SPQuery。问题是:我有一个文档库,它必须关闭5000+文档(排列在文件夹中),并且我有一个全局缓存,其中包含所选元数据的所有文档详细信息,并将其作为" document“自定义实体进行查询和缓存。我们的业务用户通常会以适当的频率更新文档库,并且可以使用代码来清除和重新创建此缓存。

现在,我正在编写一个新的UI,它将选择和获取与特定“关键字”(元数据)匹配的所有文档。我有两种选择: 1)对文档库执行CAML查询,将结果作为SPListItem获取,我需要将其转换为“文档”实体(大约8个公共的元数据字符串)。

2)使用LINQ查询这个大的文档库缓存,并获取结果“文档”实体。

从SharePoint的角度来看,任何关于哪个更好以及为什么更好的技术解释都会有很大帮助。

请随时询问我的情况,以获得更多信息

提前感谢干杯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-25 22:30:44

如果您只想获取缓存的项,而不需要访问数据库,那么显然您最好的选择是查询缓存的文档实体。

另一方面,如果您需要从SharePoint获取实体,那么我建议首先使用SPQuery来获取这些项。

我在为SharePoint数据访问编写的存储库类中实现了类似的功能。

代码语言:javascript
复制
ICollection<Document> list = 
            web.Lists[documentLibraryName].GetItems(query).Cast<SPListItem>().Select(
                doc => new Document(
                    doc["Title"].ToString(),
                    doc["Size KB"].ToString())).ToList();

上面的代码与我的代码略有不同,但它概述了一种在执行查询后转换为文档实体的简洁方法。

票数 1
EN

Stack Overflow用户

发布于 2012-07-22 09:14:27

我认为如果你想利用缓存来获得更好的性能,你也可以使用PortalSiteMapProvider。

PortalSiteMapProvider.GetCachedListItemsByQuery方法可以用来查询列表,也可以缓存查询结果。但是,如果您的查询每次返回不同的数据集,则应该避免使用它。有关更多详细信息,请查看以下内容:

http://extreme-sharepoint.com/2012/07/17/data-access-via-caml-queries/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6813410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档