Freigeben über


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.

Siehe auch

Referenz

SPChangeCollection-Member

Microsoft.SharePoint-Namespace