Метод SPSite.GetChanges (SPChangeToken, SPChangeToken)
Возвращает коллекцию изменений, зарегистрированных за определенный период времени.
Пространство имен: Microsoft.SharePoint
Сборка: Microsoft.SharePoint (в Microsoft.SharePoint.dll)
Синтаксис
'Декларация
Public Function GetChanges ( _
changeToken As SPChangeToken, _
changeTokenEnd As SPChangeToken _
) As SPChangeCollection
'Применение
Dim instance As SPSite
Dim changeToken As SPChangeToken
Dim changeTokenEnd As SPChangeToken
Dim returnValue As SPChangeCollection
returnValue = instance.GetChanges(changeToken, _
changeTokenEnd)
public SPChangeCollection GetChanges(
SPChangeToken changeToken,
SPChangeToken changeTokenEnd
)
Параметры
changeToken
Тип: Microsoft.SharePoint.SPChangeTokenОбъект SPChangeToken , указывающий даты и времени начала.
changeTokenEnd
Тип: Microsoft.SharePoint.SPChangeTokenSPChangeToken объект, который указывает дату и время окончания.
Возвращаемое значение
Тип: Microsoft.SharePoint.SPChangeCollection
Коллекция объектов SPChange , которые представляют изменения.
Замечания
При создании объектов SPChangeToken для использования с помощью этого метода, передайте SPChangeCollection.CollectionScope.Site как первый аргумента конструктора, значение свойства SPSite.ID текущего объекта в качестве второго аргумента и объект DateTime в качестве аргумента.
Кроме того применяются следующие правила.
Если оба маркера ссылаются на время до начала текущего журнала изменений, то метод создает исключение SPException.
Если второй маркер раньше, чем время первого маркера, метод возвращает пустую коллекцию.
Если первый маркер имеет значение пустая ссылка (Nothing в Visual Basic), то возвращается коллекция изменений с начала текущего журнала изменений.
Если второй маркер имеет значение пустая ссылка (Nothing в Visual Basic), то возвращается коллекция всех изменений после даты, указанной первым маркером, вплоть до предельного размера, установленного для одной коллекции. Если за этот период произошло большее количество изменений, чем может быть включено в одну коллекцию, то возвращается первый пакет.
Примечание
По умолчанию в журнал изменений данных составляет 60 дней. Период хранения можно настроить путем установки свойства ChangeLogRetentionPeriod .
Примеры
Следующий пример является консольное приложение, которое запрашивает журнал изменений для изменений, произошедших в течение семи дней. Затем приложение выводит сведения о каждом изменении на консоль.
using System;
using Microsoft.SharePoint;
namespace Test
{
class ConsoleApp
{
static void Main(string[] args)
{
using (SPSite siteCollection = new SPSite("https://localhost"))
{
using (SPWeb webSite = siteCollection.RootWeb)
{
SPChangeToken startToken = new SPChangeToken(
SPChangeCollection.CollectionScope.Site,
siteCollection.ID,
new DateTime(2008, 11, 17));
SPChangeToken endToken = new SPChangeToken(
SPChangeCollection.CollectionScope.Site,
siteCollection.ID,
new DateTime(2008, 11, 23));
long total = 0;
SPChangeCollection changes = siteCollection.GetChanges(startToken, endToken);
while (changes.Count > 0)
{
total += changes.Count;
foreach (SPChange change in changes)
{
Console.WriteLine("\nDate: {0}", change.Time.ToShortDateString());
Console.WriteLine("Object type: {0}", change.GetType().ToString());
Console.WriteLine("Change type: {0}", change.ChangeType);
}
startToken = changes.LastChangeToken;
changes = siteCollection.GetChanges(startToken, endToken);
}
Console.WriteLine("\nTotal changes = {0:#,#}", total);
}
}
Console.Write("\nPress ENTER to continue...");
Console.ReadLine();
}
}
}
Imports System
Imports Microsoft.SharePoint
Module ConsoleApp
Sub Main()
Using siteCollection As SPSite = New SPSite("https://localhost")
Using webSite As SPWeb = siteCollection.RootWeb
Dim startToken As New SPChangeToken(SPChangeCollection.CollectionScope.Site, _
siteCollection.ID, _
New DateTime(2008, 11, 17))
Dim endToken As New SPChangeToken(SPChangeCollection.CollectionScope.Site, _
siteCollection.ID, _
New DateTime(2008, 11, 23))
Dim total As Long = 0
Dim changes As SPChangeCollection = siteCollection.GetChanges(startToken, endToken)
While changes.Count > 0
total += changes.Count
For Each change As SPChange In changes
Console.WriteLine(vbCrLf + "Date: {0}", change.Time.ToShortDateString())
Console.WriteLine("Object type: {0}", change.GetType().ToString())
Console.WriteLine("Change type: {0}", change.ChangeType)
Next change
startToken = changes.LastChangeToken
changes = siteCollection.GetChanges(startToken, endToken)
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
См. также
Справочные материалы
Пространство имен Microsoft.SharePoint