Свойство SPChangeTokenCollection.Item (Guid)
Получает маркер изменений с указанным GUID из коллекции Изменение маркеров объектов.
Пространство имен: Microsoft.SharePoint
Сборка: Microsoft.SharePoint (в Microsoft.SharePoint.dll)
Синтаксис
'Декларация
Public ReadOnly Default Property Item ( _
scopeId As Guid _
) As SPChangeToken
Get
'Применение
Dim instance As SPChangeTokenCollection
Dim scopeId As Guid
Dim value As SPChangeToken
value = instance(scopeId)
public SPChangeToken this[
Guid scopeId
] { get; }
Параметры
scopeId
Тип: System.GuidSystem.Guid , идентифицирующее маркер изменений.
Значение свойства
Тип: Microsoft.SharePoint.SPChangeToken
Объект SPChangeToken , представляющий маркер изменений.
Замечания
Если маркер изменений с указанным GUID не существует в коллекции, это свойство возвращает пустая ссылка (Nothing в Visual Basic).
Каждый маркер изменений в коллекции индексируется по значению свойства ScopeId маркером. Значение этого свойства равным значению свойства целевого объекта для изменения маркера Id . Таким образом экземпляр класса SPChangeTokenCollection содержит маркеры изменения для каждой базы данных контента в текущем веб-приложении, можно использовать идентификатор GUID, который определяет конкретных баз данных содержания как индекс в коллекции и получить маркер, который можно использовать для получения изменений, содержимого базы данных.
Примеры
Следующий пример является консольным приложением, которое создает коллекцию баз данных контента и соответствующие коллекции маркеров изменения. Приложение получает идентификатор GUID, который определяет каждую базу данных и использует его в качестве индекса в коллекции маркеров. Затем он использует маркер, он извлекает запрос журнала изменений для базы данных, к которому применяется маркер.
using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
namespace Test
{
class ConsoleApp
{
static void Main(string[] args)
{
// Get a collection of content databases
SPWebApplication wa = SPWebApplication.Lookup(new Uri("https://localhost"));
SPContentDatabaseCollection dbs = wa.ContentDatabases;
// Create a collection of change tokens with
// one token for each database. Each token marks the
// current end point of the change log for a database.
SPChangeTokenCollection tokens = new SPChangeTokenCollection();
foreach (SPContentDatabase db in dbs)
tokens.Add(db.CurrentChangeToken);
// Do something that changes objects stored
// within each database
// .
// .
// .
// Get any changes that have taken place
long total = 0;
foreach (SPContentDatabase db in dbs)
{
// Get a GUID for the db.
// Note that a cast is needed to access the Id property.
SPPersistedObject po = db as SPPersistedObject;
Guid id = po.Id;
// Use the GUID to get a token for the db
SPChangeToken startingToken = tokens[id];
// Get the first batch of changes
SPChangeCollection changes = db.GetChanges(startingToken);
// Loop until there are no more changes
while (changes.Count > 0)
{
// Accumulate a total
total += changes.Count;
// Go get another batch
startingToken = changes.LastChangeToken;
changes = db.GetChanges(startingToken);
}
}
Console.WriteLine("Total changes: {0}", total.ToString());
Console.Write("\nPress ENTER to continue...");
Console.ReadLine();
}
}
}
Imports System
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.Administration
Module ConsoleApp
Sub Main()
' Get a collection of content databases
Dim wa As SPWebApplication = SPWebApplication.Lookup(New Uri("https://localhost"))
Dim dbs As SPContentDatabaseCollection = wa.ContentDatabases
' Create a collection of change tokens with
' one token for each database. Each token marks the
' current end point of the change log for a database.
Dim tokens As SPChangeTokenCollection = New SPChangeTokenCollection()
Dim db As SPContentDatabase
For Each db In dbs
tokens.Add(db.CurrentChangeToken)
Next
' Do something that changes objects stored
' within each database
' .
' .
' .
' Get any changes that have taken place
Dim total As Long = 0
For Each db In dbs
' Get a GUID for the db.
' Note that a cast is needed to access the Id property.
Dim po As SPPersistedObject = CType(db, SPPersistedObject)
Dim id As Guid = po.Id
' Use the GUID to get a token for the db
Dim startingToken As SPChangeToken = tokens(id)
' Get the first batch of changes
Dim changes As SPChangeCollection = db.GetChanges(startingToken)
' Loop until there are no more changes
While (changes.Count > 0)
' Accumulate a total
total += changes.Count
' Go get another batch
startingToken = changes.LastChangeToken
changes = db.GetChanges(startingToken)
End While
Next db
Console.WriteLine("Total changes: {0}", total.ToString())
Console.Write(vbCrLf + "Press ENTER to continue...")
Console.ReadLine()
End Sub
End Module
См. также
Справочные материалы
Элементы SPChangeTokenCollection