Класс SPChange

Представляет изменение, которое было сделано объект SharePoint в рамках элемента, список, веб-сайта, семейства веб-сайтов или базы данных контента или политики безопасности в области веб-приложения.

Иерархия наследования

System.Object
  Microsoft.SharePoint.SPChange
    

Пространство имен:  Microsoft.SharePoint
Сборка:  Microsoft.SharePoint (в Microsoft.SharePoint.dll)

Синтаксис

'Декларация
Public Class SPChange
'Применение
Dim instance As SPChange
public class SPChange

Замечания

Каждая запись в журнал изменений SharePoint Foundation представлены подкласс класса SPChange . Свойства класса SPChange родительского содержит основные сведения об изменении, включая тип изменения, как представлено свойством ChangeType ; время изменения, как представлено свойством Time ; и идентификатор семейства сайтов, где был изменен, как представлено свойством SiteId .

Свойства подклассов SPChange содержат сведения, относящиеся к типу измененного объекта. К примеру класс SPChangeItem представляет изменение объекта SPListItem и таким образом имеет свойство ListId , указывающее список, где элемент был изменен. Аналогично класс SPChangeList представляет изменение списка и имеет свойство WebId , идентифицирующий веб-сайт, где был изменен список.

Журнал изменений записываются изменения для всех объектов SharePoint, только для выбранных типов объектов. Типы объектов, которые отслеживаются в журнале изменений перечислены в следующей таблице, а также подклассов SPChange , отражающие изменения.

Подкласс

Представляет изменения

SPChangeAlert

объекты SPAlert .

SPChangeContentType

объекты SPContentType .

SPChangeField

объекты SPField .

SPChangeFile

объекты SPFile , существующих вне списка и не имеющих соответствующих элементов.

SPChangeFolder

объекты SPFolder , существующих вне списка и не имеющих соответствующих элементов.

SPChangeGroup

объекты SPGroup .

SPChangeItem

объекты SPListItem и файлы и папки, которые могут быть связаны с ними.

SPChangeList

объекты SPList .

SPChangeSecurityPolicy

объекты SPPolicy .

SPChangeSite

объекты SPSite .

SPChangeUser

объекты SPUser .

SPChangeView

объекты SPView .

SPChangeWeb

объекты SPWeb .

Используйте метод GetChanges объекта SPList, SPWeb, SPSiteили SPContentDatabase для возврата объекта SPChangeCollection с изменениями, которые происходили в заданной области действия. Затем можно перечисления коллекции и просмотрите все его элементы по отдельности.

Общее число изменений, возвращаемых запросом к журналу изменений может быть очень большим, в зависимости от хранения для журнала и область запроса. В целях повышения производительности изменения возвращаются в пакетах ограниченный размер. Если необходимо, чтобы все изменения, а не только первого пакета, код должен вызовите метод GetChanges в цикле пока не возвращает коллекцию с нуля изменения, указывающий на то, что он достигнут конец журнала. ChangeToken из последнее изменение первого пакета можно использовать для получения второго пакета и так далее, пока не получите пустую коллекцию.

Кроме того можно передать объект SPChangeQuery в метод GetChanges . Этот объект содержит свойства, которые можно использовать для фильтрации по типу объекта и изменить тип изменения. Можно также настроить размер семейства сайтов, который возвращается на одном обмена данными с помощью свойства объекта SPChangeQueryFetchLimit .

For more information about working with the change log, see Using the Change Log.

Примеры

В следующем примере показано получение всех записей в журнал изменений для базы данных контента и выводит сведения о каждом изменении на консоль.

using System;
using Microsoft.SharePoint;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite site = new SPSite("https://localhost"))
            {
                using (SPWeb web = site.RootWeb)
                {
                    // Construct a query.
                    SPChangeQuery query = new SPChangeQuery(true, true);

                    SPTimeZone timeZone = web.RegionalSettings.TimeZone;
                    long total = 0;

                    // Get changes in batches.
                    while (true)
                    {
                        // Fetch a set of changes.
                        SPChangeCollection changes = site.ContentDatabase.GetChanges(query);
                        total += changes.Count;

                        // Write info about each change to the console.
                        foreach (SPChange change in changes)
                        {
                            // Print the date of the change.
                            Console.WriteLine("\nDate: {0}",
                                              timeZone.UTCToLocalTime(change.Time).ToString());

                            // Print the ID of the site where the change took place.
                            Console.WriteLine("Site ID: {0}", change.SiteId.ToString("B"));

                            // Print the type of object that was changed.
                            //   GetType().Name returns SPChangeItem, SPChangeList, etc.
                            //   Remove the "SPChange" part of the name.
                            string objType = change.GetType().Name.Replace("SPChange", null);
                            Console.WriteLine("Type of object: {0}", objType);

                            // Print the nature of the change.
                            Console.WriteLine("Type of change: {0}", change.ChangeType.ToString());
                        }

                        // Break out of loop if we have the last batch
                        if (changes.Count < query.FetchLimit)
                            break;
                        // Otherwise, go get another batch
                        query.ChangeTokenStart = changes.LastChangeToken;
                    }
                    Console.WriteLine("\nTotal changes: {0}", total);
                }
            }
            Console.Write("\nPress ENTER to continue...");
            Console.ReadLine();
        }
    }
}
Imports System
Imports Microsoft.SharePoint

Module Test

    Sub Main()

        Using site As SPSite = New SPSite("http://lswss5/sites/don")
            Using web As SPWeb = site.RootWeb
                ' Construct a query.
                Dim query As SPChangeQuery = New SPChangeQuery(True, True)

                Dim timeZone As SPTimeZone = web.RegionalSettings.TimeZone
                Dim total As Long = 0

                ' Get changes in batches.
                While True
                    ' Fetch a set of changes.
                    Dim changes As SPChangeCollection = site.ContentDatabase.GetChanges(query)
                    total += changes.Count

                    ' Write info about each change to the console.
                    Dim change As SPChange
                    For Each change In changes
                        ' Print the date of the change.
                        Console.WriteLine(vbCrLf + "Date: {0}", _
                                          timeZone.UTCToLocalTime(change.Time).ToString())

                        ' Print the ID of the site where the change took place.
                        Console.WriteLine("Site ID: {0}", change.SiteId.ToString("B"))

                        ' Print the type of object that was changed.
                        '   GetType().Name returns SPChangeItem, SPChangeList, etc.
                        '   Remove the "SPChange" part of the name.
                        Dim objType As String = change.GetType().Name.Replace("SPChange", Nothing)
                        Console.WriteLine("Type of object: {0}", objType)

                        ' Print the nature of the change.
                        Console.WriteLine("Type of change: {0}", change.ChangeType.ToString())
                    Next

                    ' Break out of loop if we have the last batch
                    If changes.Count < query.FetchLimit Then
                        Exit While
                    End If
                    ' Otherwise, go get another batch
                    query.ChangeTokenStart = changes.LastChangeToken

                End While

                Console.WriteLine(vbCrLf + "Total changes: {0}", total)

            End Using
        End Using

        Console.Write(vbCrLf + "Press ENTER to continue...")
        Console.ReadLine()

    End Sub

End Module

Потокобезопасность

Любые общедоступные элементы static (Shared в Visual Basic) этого типа являются потокобезопасными. Не гарантируется, что любые элементы экземпляров потокобезопасны.

См. также

Справочные материалы

Элементы SPChange

Пространство имен Microsoft.SharePoint

Другие ресурсы

Using the Change Log

Иерархия наследования

System.Object
  Microsoft.SharePoint.SPChange
    Microsoft.SharePoint.SPChangeAlert
    Microsoft.SharePoint.SPChangeContentType
    Microsoft.SharePoint.SPChangeField
    Microsoft.SharePoint.SPChangeFile
    Microsoft.SharePoint.SPChangeFolder
    Microsoft.SharePoint.SPChangeGroup
    Microsoft.SharePoint.SPChangeItem
    Microsoft.SharePoint.SPChangeList
    Microsoft.SharePoint.SPChangeSecurityPolicy
    Microsoft.SharePoint.SPChangeSite
    Microsoft.SharePoint.SPChangeUser
    Microsoft.SharePoint.SPChangeView
    Microsoft.SharePoint.SPChangeWeb