新增功能:查询增强功能

上次修改时间: 2010年4月12日

适用范围: SharePoint Foundation 2010

Microsoft SharePoint Foundation 2010 包含多种用于查询和筛选数据的新方式。

对服务器端代码的新查询支持

在 SharePoint Foundation 2010 中,通过服务器代码查询数据比以往更简单、更有效。

LINQ to SharePoint 提供程序

当代码需要查询列表数据时,不再需要撰写协作应用程序标记语言 (CAML)查询。SharePoint Foundation 2010 包括 LINQ to SharePoint 提供程序,它允许您的代码使用 LINQ 语法通过服务器代码查询 SharePoint 列表。该提供程序会将 LINK 查询转换为 CAML 查询以提交到内容数据库。因为 SharePoint Foundation 2010 还在查询架构中新增了 Join 元素,所以可以在 LINK 查询中使用 join 关键字进行隐式或显式联接。(请参阅下文中的"列出 CAML 查询中支持的联接"。)您还可以使用该提供程序对列表执行写入操作。与往常 LINQ 提供程序一样,您必须具有对关系内容数据库提供面向对象的接口的类。这些类由 SharePoint Foundation 2010 附带的 SPMetal 工具生成。有关 LINQ to SharePoint 提供程序的详细信息,请参阅使用 LINQ to SharePoint 管理数据。有关 SPMetal 的详细信息,请参阅 SPMetal

即使未使用 LINQ to SharePoint 提供程序,也可以在代码中使用 LINQ 语法。实现了 IEnumerable<T> 的任何 SharePoint Foundation 对象都可以通过 LINQ 语法进行查询。有关详细信息,请参阅 LINQ to Objects(该链接可能指向英文页面)

列出 CAML 查询中支持的联接

现在可以使用新增的 Join 元素(视图) 在单个查询中联接多个列表。使用新增的 ProjectedFields 元素(视图) 元素可以指定在结果中包含哪些列表字段。使用这些元素时需要考虑一些细节问题。有关详细信息,请参阅列出联接和投影

通过客户端代码进行的查询

客户端应用程序访问 SharePoint Foundation 数据的方式已经发生了重大变化。

客户端对象模型中的查询

您可以通过两种方式在客户端对象模型中进行查询:

对 ADO.NET Data Services Framework 的支持

如果您的客户端应用程序不使用新的 SharePoint Foundation 客户端对象模型,并且您只需要查询列表数据,则可以选择使用 ADO.NET Data Services 框架(该链接可能指向英文页面) 查询内容数据库。

避免使用 SharePoint 数据提供 Web 服务

SharePoint Foundation 产品的早期版本提供了一组 Web 服务以允许客户端与 SharePoint Foundation 部署进行交互。为了向 Web 服务客户端提供向后兼容性和互操作性,其中的一些服务(例如List Data Retrieval Web Service)仍受支持。为了实现最佳性能和可用性,我们建议使用客户端对象模型或 ADO.NET Data Services Framework。

避免直接调用 owssvr.dll

Microsoft SharePoint Foundation 2010 软件开发工具包 (SDK) 仍包含有关客户端通过使用 RPC 调用访问 SharePoint Foundation 部署的文档,但是包含此信息只是为了为执行此类调用的现有客户端应用程序提供疑难解答帮助。若要最大程度地提高新客户端应用程序与 SharePoint Foundation 未来版本的兼容性,我们建议不要通过直接调用 owssvr.dll 文件来执行客户端访问。