SPSite.GetChanges-Methode (SPChangeQuery)
Gibt eine Auflistung von Änderungen aus dem Änderungsprotokoll gefiltert durch die angegebene Abfrage zurück.
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaration
Public Function GetChanges ( _
query As SPChangeQuery _
) As SPChangeCollection
'Usage
Dim instance As SPSite
Dim query As SPChangeQuery
Dim returnValue As SPChangeCollection
returnValue = instance.GetChanges(query)
public SPChangeCollection GetChanges(
SPChangeQuery query
)
Parameter
query
Typ: Microsoft.SharePoint.SPChangeQueryEin SPChangeQuery -Objekt, das die Abfrage darstellt.
Rückgabewert
Typ: Microsoft.SharePoint.SPChangeCollection
Eine Auflistung von SPChange -Objekten, die Änderungen darstellen. Sie können die maximale Größe der Auflistung anpassen, indem Sie die FetchLimit -Eigenschaft des SPChangeQuery -Objekts, das Sie übergeben in dem Abfragezeichenfolgen-Parameter.
Hinweise
Verwenden Sie diese Methode, um Änderungen gefiltert werden, wenn Sie weniger von Belang, nur bei Änderungen an bestimmten-Objekte, statt aller Objekte oder nur in ausgewählten Aktionen auf bestimmte Objekte sind. Weitere Informationen finden Sie in der Dokumentation für die SPChangeQuery -Klasse.
Hinweis
Standardmäßig behält das Änderungsprotokoll für 60 Tage Daten. Sie können die Dauer der Beibehaltung konfigurieren, indem die ChangeLogRetentionPeriod -Eigenschaft.
Beispiele
Im folgende Beispiel handelt es sich um eine Konsolenanwendung, melden Sie sich die Änderung für alle, Abfragen hinzufügen, löschen und Aktualisierungsvorgänge für Inhaltstypen in einer Websitesammlung. Beachten Sie, dass die Anwendung ruft die GetChanges -Methode in einer Schleife, Abrufen von Änderungen in den Reihen, bis alle Änderungen abgerufen wurden.
using System;
using Microsoft.SharePoint;
namespace Test
{
class ConsoleApp
{
static void Main(string[] args)
{
using (SPSite siteCollection = new SPSite("https://localhost"))
{
using (SPWeb webSite = siteCollection.RootWeb)
{
// Construct a query.
SPChangeQuery query = new SPChangeQuery(false, // limit object types
false); // limit change types
// object type
query.ContentType = true;
// change types
query.Add = true;
query.Delete = true;
query.Update = true;
long total = 0;
while (true)
{
SPChangeCollection changes = siteCollection.GetChanges(query);
total += changes.Count;
foreach (SPChangeContentType change in changes)
{
// Get the content type (if it still exists).
SPContentType contentType =
webSite.AvailableContentTypes[change.Id];
// The change might have been to delete the content type.
string contentTypeName;
if (contentType == null)
contentTypeName = "Unknown";
else
contentTypeName = contentType.Name;
Console.WriteLine("\n{0} content type was changed on {1}.",
contentTypeName, change.Time.ToShortDateString());
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 ConsoleApp
Sub Main()
Using siteCollection As SPSite = New SPSite("https://localhost")
Using webSite As SPWeb = siteCollection.RootWeb
' Construct a query.
Dim query As New SPChangeQuery(False, False)
' object type
query.ContentType = True
' change types
query.Add = True
query.Delete = True
query.Update = True
Dim total As Long = 0
While True
Dim changes As SPChangeCollection = siteCollection.GetChanges(query)
total += changes.Count
For Each change As SPChangeContentType In changes
' Get the content type (if it still exists).
Dim contentType As SPContentType = _
webSite.AvailableContentTypes(change.Id)
' The change might have been to delete the content type.
Dim contentTypeName As String
If contentType Is Nothing Then
contentTypeName = "Unknown"
Else
contentTypeName = contentType.Name
End If
Console.WriteLine(vbCrLf + "{0} content type was changed on {1}.", _
contentTypeName, change.Time.ToShortDateString())
Console.WriteLine("Type of change: {0}", change.ChangeType.ToString())
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 changes = {0:#,#}", total)
End Using
End Using
Console.Write(vbCrLf + "Press ENTER to continue...")
Console.ReadLine()
End Sub
End Module
Siehe auch
Referenz
Microsoft.SharePoint-Namespace