SPChangeCollection-Klasse
Stellt eine Auflistung von Objekten, die von der SPChange -Klasse abgeleitet.
Vererbungshierarchie
System.Object
Microsoft.SharePoint.Administration.SPAutoSerializingObject
Microsoft.SharePoint.SPBaseCollection
Microsoft.SharePoint.SPChangeCollection
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaration
Public NotInheritable Class SPChangeCollection _
Inherits SPBaseCollection
'Usage
Dim instance As SPChangeCollection
public sealed class SPChangeCollection : SPBaseCollection
Hinweise
Verwenden Sie die GetChanges -Methode des SPList, SPWeb, SPSiteoder SPContentDatabase -Objekts, um ein SPChangeCollection -Objekt mit den Änderungen zurückzugeben, die innerhalb eines bestimmten Bereichs aufgetreten sind. Sie können dann die Auflistung und untersuchen alle Member einzeln.
Jedes Objekt in der SPChangeCollection, das von der GetChanges-Methode zurückgegeben wird, ist eine Unterklasse der SPChange-Klasse. Die Eigenschaften der übergeordneten SPChange-Klasse enthalten grundlegende Informationen zu einer Änderung, einschließlich des Änderungstyps gemäß der ChangeType-Eigenschaft, der Uhrzeit der Änderung gemäß der Time-Eigenschaft und der ID der Websitesammlung, in der die Änderung vorgenommen wurde, gemäß der SiteId-Eigenschaft. Die Eigenschaften der Unterklassen von SPChange enthalten Informationen speziell zum geänderten Objekttyp. Beispielsweise repräsentiert die SPChangeItem-Klasse eine Änderung an einem SPListItem-Objekt und weist deshalb eine ListId-Eigenschaft zur Identifizierung der Liste auf, in der das Element geändert wurde. Entsprechend repräsentiert die SPChangeList-Klasse eine Änderung an einer Liste und weist eine WebId-Eigenschaft zur Identifizierung der Website auf, in der die Liste geändert wurde.
Die Gesamtzahl der zurückgegeben, die von einer Abfrage für das Änderungsprotokoll Änderungen möglicherweise sehr groß, je nach die Aufbewahrungsdauer für das Protokoll und den Bereich der Abfrage. Aus Gründen der Systemleistung sind Änderungen in Batches von Größe ist beschränkt zurückgegeben. Wenn Sie alle Änderungen, sondern nur der erste Batch möchten, sollte Ihr Code die GetChanges -Methode in einer Schleife aufrufen, bis sie gibt eine Auflistung mit 0 (null) Änderungen, womit angezeigt wird, dass sie das Ende des Protokolls erreicht hat. Die ChangeToken aus der letzten Änderung des ersten Stapels können Sie den zweiten Batch abzurufen usw., bis eine leere Auflistung abrufen.
Alternativ können Sie ein SPChangeQuery -Objekt an die GetChanges -Methode übergeben. Dieses Objekt verfügt über Eigenschaften, die Sie zum Filtern nach Objekttyp und nach Änderungstyp Änderungen verwenden können. Sie können auch die Größe der Auflistung anpassen, die auf einem einzelnen Roundtrip durch Festlegen des SPChangeQuery -Objekts FetchLimit -Eigenschaft zurückgegeben wird.
Weitere Informationen zum Arbeiten mit dem Änderungsprotokoll finden Sie unter Using the Change Log.
Beispiele
Im folgende Beispiel wird eine einfache Konsolenanwendung, die das Änderungsprotokoll für Elemente hinzugefügt, aktualisiert oder gelöscht, die aus einer angegebenen Liste abfragt. Nach dem Abrufen von Änderungen, die Anwendung untersucht jeder Änderung und das Datum der Änderung, Art der Änderung und der Name des Elements, das in der Konsole geändert wurde.
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
Threadsicherheit
Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind threadsicher. Die Threadsicherheit von Instanzmembern ist nicht gewährleistet.