SPChange-Klasse
Stellt eine Änderung an, die an ein SharePoint-Objekt innerhalb des Bereichs eines Elements, Liste, Website, Websitesammlung oder Content-Datenbank oder an eine Sicherheitsrichtlinie innerhalb des Bereichs einer Webanwendung vorgenommen wurde.
Vererbungshierarchie
System.Object
Microsoft.SharePoint.SPChange
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaration
Public Class SPChange
'Usage
Dim instance As SPChange
public class SPChange
Hinweise
Jeder Eintrag in das Änderungsprotokoll SharePoint Foundation wird durch eine Unterklasse der Klasse SPChange dargestellt. Die Eigenschaften der übergeordneten SPChange Klasse enthalten grundlegende Informationen zu einer Änderung, einschließlich der Art der Änderung, dargestellt durch die ChangeType -Eigenschaft. die Uhrzeit der Überarbeitung, dargestellt durch die Time -Eigenschaft; und die ID der Websitesammlung, in dem die Änderung erfolgt ist, dargestellt durch die SiteId -Eigenschaft.
Die Eigenschaften der Unterklassen von SPChange enthalten spezifische Informationen für den Typ des Objekts, die geändert wurde. Beispielsweise die SPChangeItem -Klasse stellt eine Änderung auf ein Objekt SPListItem und hat daher eine ListId -Eigenschaft, die in der Liste aufgeführt, in dem das Element geändert wurde. Entsprechend die SPChangeList -Klasse stellt eine Änderung an einer Liste und verfügt über eine WebId -Eigenschaft, die die Website angibt, in dem die Liste geändert wurde.
Das Änderungsprotokoll werden Änderungen an allen SharePoint-Objekten, nur für ausgewählte Objekttypen nicht aufgezeichnet. Objekttypen, die im Änderungsprotokoll nachverfolgt werden, sind in der folgenden Tabelle, zusammen mit der Unterklassen von SPChange aufgeführt, die für diese Änderungen darstellen.
Unterklasse |
Stellt Änderungen an |
---|---|
SPAlert -Objekte. |
|
SPContentType -Objekte. |
|
SPField -Objekte. |
|
SPFile -Objekte, die keine entsprechenden Elemente vorhanden, die sich außerhalb einer Liste befinden. |
|
SPFolder -Objekte, die keine entsprechenden Elemente vorhanden, die sich außerhalb einer Liste befinden. |
|
SPGroup -Objekte. |
|
SPListItem -Objekte, Dateien und Ordner, die mit diesen verknüpft werden können. |
|
SPList -Objekte. |
|
SPPolicy -Objekte. |
|
SPSite -Objekte. |
|
SPUser -Objekte. |
|
SPView -Objekte. |
|
SPWeb -Objekte. |
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.
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.
For more information about working with the change log, see Using the Change Log.
Beispiele
Im folgenden Beispiel werden alle Einträge in das Änderungsprotokoll für eine Inhaltsdatenbank abgerufen und Informationen zu jeder Änderung an der Konsole gedruckt.
using System;
using Microsoft.SharePoint;
namespace Test
{
class Program
{
static void Main(string[] args)
{
using (SPSite site = new SPSite("https://localhost"))
{
using (SPWeb web = site.RootWeb)
{
// Construct a query.
SPChangeQuery query = new SPChangeQuery(true, true);
SPTimeZone timeZone = web.RegionalSettings.TimeZone;
long total = 0;
// Get changes in batches.
while (true)
{
// Fetch a set of changes.
SPChangeCollection changes = site.ContentDatabase.GetChanges(query);
total += changes.Count;
// Write info about each change to the console.
foreach (SPChange change in changes)
{
// Print the date of the change.
Console.WriteLine("\nDate: {0}",
timeZone.UTCToLocalTime(change.Time).ToString());
// Print the ID of the site where the change took place.
Console.WriteLine("Site ID: {0}", change.SiteId.ToString("B"));
// Print the type of object that was changed.
// GetType().Name returns SPChangeItem, SPChangeList, etc.
// Remove the "SPChange" part of the name.
string objType = change.GetType().Name.Replace("SPChange", null);
Console.WriteLine("Type of object: {0}", objType);
// Print the nature of the change.
Console.WriteLine("Type of change: {0}", change.ChangeType.ToString());
}
// Break out of 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 Test
Sub Main()
Using site As SPSite = New SPSite("http://lswss5/sites/don")
Using web As SPWeb = site.RootWeb
' Construct a query.
Dim query As SPChangeQuery = New SPChangeQuery(True, True)
Dim timeZone As SPTimeZone = web.RegionalSettings.TimeZone
Dim total As Long = 0
' Get changes in batches.
While True
' Fetch a set of changes.
Dim changes As SPChangeCollection = site.ContentDatabase.GetChanges(query)
total += changes.Count
' Write info about each change to the console.
Dim change As SPChange
For Each change In changes
' Print the date of the change.
Console.WriteLine(vbCrLf + "Date: {0}", _
timeZone.UTCToLocalTime(change.Time).ToString())
' Print the ID of the site where the change took place.
Console.WriteLine("Site ID: {0}", change.SiteId.ToString("B"))
' Print the type of object that was changed.
' GetType().Name returns SPChangeItem, SPChangeList, etc.
' Remove the "SPChange" part of the name.
Dim objType As String = change.GetType().Name.Replace("SPChange", Nothing)
Console.WriteLine("Type of object: {0}", objType)
' Print the nature of the change.
Console.WriteLine("Type of change: {0}", change.ChangeType.ToString())
Next
' 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
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
Microsoft.SharePoint-Namespace
Weitere Ressourcen
Vererbungshierarchie
System.Object
Microsoft.SharePoint.SPChange
Microsoft.SharePoint.SPChangeAlert
Microsoft.SharePoint.SPChangeContentType
Microsoft.SharePoint.SPChangeField
Microsoft.SharePoint.SPChangeFile
Microsoft.SharePoint.SPChangeFolder
Microsoft.SharePoint.SPChangeGroup
Microsoft.SharePoint.SPChangeItem
Microsoft.SharePoint.SPChangeList
Microsoft.SharePoint.SPChangeSecurityPolicy
Microsoft.SharePoint.SPChangeSite
Microsoft.SharePoint.SPChangeUser
Microsoft.SharePoint.SPChangeView
Microsoft.SharePoint.SPChangeWeb