构造块:查询和视图

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

适用范围: SharePoint Foundation 2010

本文内容
查询和视图的对象模型
用于查询和视图的 XML
LINQ to SharePoint 提供程序的对象模型
用于 SPMetal 的 XML
与查询和视图开发相关的领域
有关查询和视图开发的详细信息

在 Microsoft SharePoint Foundation 2010 中,查询可确定返回哪些网站数据或列表数据,而视图确定如何在页面中显示这些数据。视图总是包含查询,但查询并不总是与视图相关联,因为在托管代码上下文中,查询可以独立于视图使用。视图可以作为视图样式跨网站中的列表进行共享。

传统上,协作应用程序标记语言 (CAML) 用作在 SharePoint Foundation 中定义查询和视图的主要方法。您可以使用 CAML 字符串在服务器对象模型或新的客户端对象模型上下文中定义查询。不过,SharePoint Foundation 2010 引入了一种无需使用 CAML 来定义查询的替代方法。现在您可以直接使用新的 LINQ to SharePoint 提供程序来查询 SharePoint 数据,该提供程序允许您从使用语言集成查询 (LINQ) 语法的服务器代码中查询列表。SPMetal 是一种命令行工具,可用于生成实体类,而实体类又可提供 SharePoint Foundation 内容数据库的面向对象的接口。

查询和视图的对象模型

在处理使用 Microsoft.SharePoint 命名空间的服务器代码时,通过实例化 SPQuery 对象并将包含定义查询的 CAML 的字符串赋给 Query 属性来定义查询。然后,将 SPQuery 对象作为 SPList 对象的 GetItems() 方法中的参数进行传递以返回指定的列表项。

使用新 Microsoft.SharePoint.Client 命名空间(JavaScript:SP 命名空间)的客户端代码的工作方式与服务器代码类似。在客户端代码中,可以通过实例化 CamlQuery 对象 (JavaScript: CamlQuery) 并将 CAML 查询字符串赋给 ViewXml 属性 (JavaScript: viewXml) 来定义查询。然后,将 CamlQuery 作为 List (JavaScript: List) 的 GetItems(CamlQuery) 方法 (JavaScript: getItems) 中的参数进行传递以返回指定的列表项。

在服务器和客户端对象模型中处理视图和查询时使用的最重要的类包括以下几种:

有关在服务器对象模型中使用查询的信息,请参阅如何:从列表返回项。有关在客户端对象模型中使用查询的信息,请参阅数据检索概述如何:检索列表项

用于查询和视图的 XML

CAML 视图架构包含 CAML 查询,但查询架构经常在视图架构之外的上下文中使用。视图包含在列表的 Schema.xml 文件中,该文件位于列表定义的 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURE 文件夹中。在 SharePoint Foundation 2010 中,还通过 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS\XSL 内的 .xsl 文件中的 XSLT 定义了许多视图。有关 XSLT 视图的信息,请参阅列表视图。SharePoint Foundation 2010 引入了 View 元素可以包含的新 JoinsProjectFields 元素,这使得列表视图可以包括已连接到主列表的其他列表中的字段。

有关视图和查询架构及其元素的结构的信息,请参阅视图架构查询架构

LINQ to SharePoint 提供程序的对象模型

Microsoft.SharePoint.Linq 命名空间提供了以下用于实现 LINQ to SharePoint 提供程序的重要类。

  • DataContext - 主网关类,它提供对 SharePoint Foundation 的访问权,以及用于 LINQ 查询、写入内容数据库和对象变更管理的功能。GetList<T>(String) 返回表示可查询的列表的 EntityList<TEntity> 对象,SubmitChanges() 将更改写入内容数据库。

  • EntityList<TEntity> – 表示可通过使用 LINQ 查询的 SharePoint Foundation 列表。与一组其他表示列表项和字段值的"实体类"结合使用时,此列表可在面向对象的 .NET 代码和内容数据库的关系结构之间提供对象关系映射和接口。

  • EntityRef<TEntity> – 为一对多关系的单方提供延迟加载和关系维护的实体类。

  • EntitySet<TEntity> - 为一对多和多对多关系的"多"方提供延迟加载和关系维护的实体类。

  • LookupList<T> - 表示允许多个值的查阅字段(列)的值的实体类。

有关可用于 LINQ to SharePoint 提供程序的其他重要类的信息,请参阅 Microsoft.SharePoint.Linq。有关介绍该提供程序的概述和编程任务,请参阅使用 LINQ to SharePoint 管理数据

用于 SPMetal 的 XML

SPMetal 参数 XML 架构 用于替代 SPMetal 的默认行为的某些方面,特别是确定该工具生成的实体类中将包含哪些内容数据库实体。有关如何使用该工具及其架构的详细信息,请参阅 SPMetal

与查询和视图开发相关的领域

构造块:列表和文档库

有关查询和视图开发的详细信息

查询和数据检索

列表视图