Класс SPChangeCollection

Представляет коллекцию объектов, производных от класса SPChange .

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

System.Object
  Microsoft.SharePoint.Administration.SPAutoSerializingObject
    Microsoft.SharePoint.SPBaseCollection
      Microsoft.SharePoint.SPChangeCollection

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

Синтаксис

'Декларация
Public NotInheritable Class SPChangeCollection _
    Inherits SPBaseCollection
'Применение
Dim instance As SPChangeCollection
public sealed class SPChangeCollection : SPBaseCollection

Замечания

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

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

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

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

Дополнительные сведения о работе с журналом изменений Using the Change Logсм.

Примеры

Следующий пример является простым консольным приложением, которое запрашивает журнал изменений элементов при добавлении, обновлении или удалении из указанного списка. После получения изменений, приложение проверяет каждое изменение и вывод даты изменения, тип изменения, и имя элемента, который был изменен на консоль.

Imports System
Imports Microsoft.SharePoint

Module ConsoleApp
   Sub Main()
      Using siteCollection As SPSite = New SPSite("https://localhost")
         Using webSite As SPWeb = siteCollection.OpenWeb()

            ' Get a list.
            Dim list As SPList = webSite.Lists(0)

            ' Construct a query
            Dim query As New SPChangeQuery(False, False)

            ' Specify the object type. 
            query.Item = True

            ' Specify change types. 
            query.Add = True
            query.Delete = True
            query.Update = True

            Dim timeZone As SPTimeZone = webSite.RegionalSettings.TimeZone
            Dim total As Integer = 0

            ' Loop until we reach the end of the log.
            While True

               Dim changes As SPChangeCollection = list.GetChanges(query)

               total += changes.Count

               ' Print info about each change to the console.
               For Each change As SPChangeItem In changes
                  ' Get the item name.
                  Dim itemName As String = String.Empty
                  Dim item As SPListItem = Nothing
                  Try
                     item = list.GetItemByUniqueId(change.UniqueId)
                     itemName = item.Name
                  Catch ex As ArgumentException
                     itemName = "Unknown"
                  End Try

                  Console.WriteLine(vbCrLf + "Date: {0}", timeZone.UTCToLocalTime(change.Time).ToString())
                  Console.WriteLine("Change: {0}", change.ChangeType)
                  Console.WriteLine("Item: {0}", itemName)

               Next change

               ' Break out of the loop when we fetch the last batch of changes.
               If changes.Count < query.FetchLimit Then
                  Exit While
               End If

               ' Go get another batch of changes starting where we left off.
               query.ChangeTokenStart = changes.LastChangeToken

            End While

            Console.WriteLine(vbCrLf + "Total of {0:#,#} changes to {1} list", total, list.Title)

         End Using
      End Using

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

   End Sub
End Module

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

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

См. также

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

Элементы SPChangeCollection

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