SPSite.GetChanges - Méthode (SPChangeQuery)
Renvoie une collection des modifications apportées dans le journal des modifications filtré par la requête spécifiée.
Espace de noms : Microsoft.SharePoint
Assembly : Microsoft.SharePoint (dans Microsoft.SharePoint.dll)
Syntaxe
'Déclaration
Public Function GetChanges ( _
query As SPChangeQuery _
) As SPChangeCollection
'Utilisation
Dim instance As SPSite
Dim query As SPChangeQuery
Dim returnValue As SPChangeCollection
returnValue = instance.GetChanges(query)
public SPChangeCollection GetChanges(
SPChangeQuery query
)
Paramètres
query
Type : Microsoft.SharePoint.SPChangeQueryObjet SPChangeQuery qui représente la requête.
Valeur renvoyée
Type : Microsoft.SharePoint.SPChangeCollection
Collection d'objets SPChange qui représentent les modifications. Vous pouvez ajuster la taille maximale de la collection en définissant la propriété FetchLimit de l'objet SPChangeQuery que vous passez dans le paramètre de requête.
Remarques
Utilisez cette méthode pour filtrer les modifications lorsque vous intéresse uniquement dans les modifications apportées aux objets particuliers, plutôt que tous les objets ou uniquement dans les actions sélectionnées sur les objets particuliers. Pour plus d'informations, consultez la documentation pour la classe SPChangeQuery .
Notes
Par défaut, le journal des modifications conserve des données pendant 60 jours. Vous pouvez configurer la période de rétention en définissant la propriété ChangeLogRetentionPeriod .
Exemples
L'exemple suivant est une application de console que la modification se connecter pour toutes les requêtes ajouter, supprimer et mettre à jour des opérations sur les types de contenu dans une collection de sites. Notez que l'application n'appelle la méthode GetChanges dans une boucle, extraction des modifications en lots jusqu'à ce que toutes les modifications ont été récupérées.
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
Voir aussi
Référence
Microsoft.SharePoint - Espace de noms