查询更改日志以获取特定更改

上次修改时间: 2015年3月9日

适用范围: SharePoint Foundation 2010

本文内容
构建查询
按对象类型筛选
按更改类型筛选

您可以缩小更改集合中返回的更改的选择范围,方法是:将 SPChangeQuery 对象传递给 SPListSPWebSPSiteSPContentDatabase 类的 GetChanges 方法重载。在构建 SPChangeQuery 对象时,可以指定要根据对象类型、更改类型还是同时根据这两个条件来筛选查询结果。

构建查询

若要筛选通过调用 GetChanges(SPChangeQuery) 方法所返回的结果,请将 SPChangeQuery 构造函数的参数与 SPChangeQuery 对象的属性结合使用。

构造函数的签名如下:

public SPChangeQuery(bool AllChangeObjectTypes, bool AllChangeTypes);

下面显示了如何使用构造函数的两个参数:

  • AllChangeObjectTypes

    传递 true 可返回所有对象类型的更改。传递 false 可将查询限定为特定类型的对象;然后在与您感兴趣的对象类型相对应的 SPChangeQuery 对象的属性中设置 true。

    例如,以下代码可构建一个针对 SPGroup 对象更改的查询。

    // Construct a query.
    SPChangeQuery query = new SPChangeQuery(false, true); 
    
    // Specify the object type. 
    query.Group = true;
    
  • AllChangeTypes

    传递 true 可返回所有类型的更改。传递 false 可将查询限定为特定类型的更改;然后在与您感兴趣的更改类型相对应的 SPChangeQuery 对象的属性中设置 true。

    例如,以下代码可构建一个针对删除对象的更改的查询。

    // Construct a query.
    SPChangeQuery query = new SPChangeQuery(true, false); 
    
    // Specify the change type. 
    query.Delete = true;
    

如果要将针对特定类型更改的查询限定为特定类型的对象,则可以将 false 作为实参 (argument) 传递给两个形参 (parameter)。例如,以下代码可构建一个针对添加、删除或更新列表项的更改的查询。

// Construct a query.
SPChangeQuery query = new SPChangeQuery(false, false); 

// Specify the object type.
query.Item = true;

// And the change types. 
query.Add = true;
query.Delete = true;
query.Update = true;

按对象类型筛选

下表是 SPChangeQuery 类的属性列表,可使用这些属性指定应返回其更改的对象的类型。若要获取特定类型对象的更改,请将相应属性设置为 true。更改条目作为 SPChange 的子类返回,这些子类具有特定于此对象类型的属性。例如,SPChangeUser 子类表示 SPUser 对象的更改,并具有 IsSiteAdminChange 属性,该属性描述该类型对象的更改特征。

表 1. 用于指定对象类型的属性

属性

说明

返回的子类

Alert

包括 SPAlert 对象更改。

SPChangeAlert

ContentType

包括 SPContentType 对象更改。

SPChangeContentType

Field

包括 SPField 对象更改。

SPChangeField

File

包括位于列表以外且不具有对应项的文件的更改。

SPChangeFile

Folder

包括位于列表以外且不具有对应项的文件夹的更改。

SPChangeFolder

Group

包括 SPGroup 对象更改。

SPChangeGroup

Item

包括位于列表中的所有对象(列表项、文件和文件夹)的更改。

SPChangeItem

List

包括 SPList 对象更改。

SPChangeList

SecurityPolicy

包括在 Web 应用程序级别进行的安全策略更改,此更改会影响整个内容数据库。

SPChangeSecurityPolicy

Site

包括 SPSite 对象更改。

SPChangeSite

User

包括 SPUser 对象更改。

SPChangeUser

View

包括 SPView 对象更改。

SPChangeView

Web

包括 SPWeb 对象更改。

SPChangeWeb

按更改类型筛选

下表是 SPChangeQuery 类的属性列表,这些属性可用于指定查询应返回的对象的更改类型。若要获取特定类型的更改,请将相应属性设置为 true。但是,请记住,不是所有类型的更改都适用于所有类型的对象。

表 2. 用于指定更改类型的属性

属性

说明

Add

包括对象添加。对于项目、文件和文件夹,日志中的 TimeLastModified 值应与该对象的 Created 属性相同。

Delete

包括对象删除。

GroupMembershipAdd

包括向组中添加用户的更改。

GroupMembershipDelete

包括从组中删除用户的更改。

Move

包括移动操作。

Navigation

包括导航更改。

Rename

包括重命名更改。这表示 URL 的文件名部分已更改。

Restore

包括从回收站或备份还原对象的更改。还原更改可指示同步客户端的更改日志读取者必须重新同步该对象及其所有子级。

RoleAssignmentAdd

包括在对象范围内添加角色分配的更改。

RoleAssignmentDelete

包括在对象范围内删除角色分配的更改。

RoleDefinitionAdd

包括添加角色定义的更改。

RoleDefinitionDelete

包括删除角色定义的更改。

RoleDefinitionUpdate

包括修改角色定义的更改。

SystemUpdate

包括修改对象但不更改其 Modified 或 Modified By 属性的更改。日志中的 TimeLastModified 值应为更新发生的时间,而不是 Modified 属性。

Update

包括修改对象的更改。

请参阅

任务

如何:按对象类型筛选更改日志

如何:按更改类型筛选更改日志