Конструктор SPChangeToken (SPChangeCollection.CollectionScope, Guid, DateTime)
Инициализирует новый экземпляр класса SPChangeToken с указанной базовой коллекции область, соответствующий идентификатор объекта (ID) и время изменения.
Пространство имен: Microsoft.SharePoint
Сборка: Microsoft.SharePoint (в Microsoft.SharePoint.dll)
Синтаксис
'Декларация
Public Sub New ( _
scope As SPChangeCollection.CollectionScope, _
scopeId As Guid, _
changeTime As DateTime _
)
'Применение
Dim scope As SPChangeCollection.CollectionScope
Dim scopeId As Guid
Dim changeTime As DateTime
Dim instance As New SPChangeToken(scope, scopeId, _
changeTime)
public SPChangeToken(
SPChangeCollection.CollectionScope scope,
Guid scopeId,
DateTime changeTime
)
Параметры
scope
Тип: Microsoft.SharePoint.SPChangeCollection.CollectionScopeОбласть маркер изменений, который может быть список, веб-узла, семейства веб-сайтов или содержимого базы данных.
scopeId
Тип: System.GuidGUID области.
changeTime
Тип: System.DateTimeДата и время изменения. Время в журнале изменений указываются в формате всеобщего скоординированного времени (UTC).
Замечания
Маркеры изменения характерные для определенного списка, веб-узла, семейства веб-сайтов или содержимого базы данных. При создании маркера изменения значения, которые используются в первых двух параметров конструктора должно соответствовать объект, программирование. Например если планируется передать маркер изменений метод GetChanges объекта SPList , необходимо указать как значение свойства ID список как scopeIdи scopeSPChangeCollection.CollectionScope.List .
Примеры
Следующий пример является консольным приложением, которое создает два маркера изменения таким образом, он может выполнить запрос журнала изменений для семейства веб-сайтов в семидневный период изменений.
using System;
using Microsoft.SharePoint;
namespace Test
{
class ConsoleApp
{
static void Main(string[] args)
{
using (SPSite siteCollection = new SPSite("https://localhost"))
{
// Create a query.
SPChangeQuery query = new SPChangeQuery(true, true);
// Create a change token for the start.
DateTime startTime = new DateTime(2009, 6, 1);
query.ChangeTokenStart = new SPChangeToken(SPChangeCollection.CollectionScope.Site,
siteCollection.ID,
startTime);
// Create a change token for the end.
query.ChangeTokenEnd = new SPChangeToken(SPChangeCollection.CollectionScope.Site,
siteCollection.ID,
startTime.AddDays(6));
// Specify the number of changes per round trip.
query.FetchLimit = 1000;
// Keep a running total.
long total = 0;
while (true)
{
SPChangeCollection changes = siteCollection.GetChanges(query);
total += changes.Count;
foreach (SPChange change in changes)
{
Console.WriteLine("\nDate: {0}", change.Time.ToShortDateString());
Console.WriteLine("Change subclass: {0}", change.GetType().ToString());
Console.WriteLine("Change type: {0}", change.ChangeType);
}
// Break out of the 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 ConsoleApp
Sub Main()
Using siteCollection As SPSite = New SPSite("https://localhost")
' Create a query
Dim query As New SPChangeQuery(True, True)
' Create a change token for the start.
Dim startTime As New DateTime(2009, 6, 1)
query.ChangeTokenStart = New SPChangeToken(SPChangeCollection.CollectionScope.Site, _
siteCollection.ID, _
startTime)
' Create a change token for the end.
query.ChangeTokenEnd = New SPChangeToken(SPChangeCollection.CollectionScope.Site, _
siteCollection.ID, _
startTime.AddDays(6))
' Specify the number of changes per round trip.
query.FetchLimit = 1000
' Keep a running total.
Dim total As Long = 0
While True
Dim changes As SPChangeCollection = siteCollection.GetChanges(query)
total += changes.Count
For Each change As SPChange In changes
Console.WriteLine(vbCrLf + "Date: {0}", change.Time.ToShortDateString())
Console.WriteLine("Change subclass: {0}", change.GetType().ToString())
Console.WriteLine("Change type: {0}", change.ChangeType)
Next change
' 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
Console.Write(vbCrLf + "Press ENTER to continue...")
Console.ReadLine()
End Sub
End Module