Partager via


SPChange - Classe

Représente une modification a été apportée à un objet SharePoint dans l'étendue d'un élément, la liste, le site Web, la collection de sites ou la base de données de contenu, ou à une stratégie de sécurité dans l'étendue d'une application Web.

Hiérarchie d’héritage

System.Object
  Microsoft.SharePoint.SPChange
    

Espace de noms :  Microsoft.SharePoint
Assembly :  Microsoft.SharePoint (dans Microsoft.SharePoint.dll)

Syntaxe

'Déclaration
Public Class SPChange
'Utilisation
Dim instance As SPChange
public class SPChange

Remarques

Chaque entrée dans le journal des modifications SharePoint Foundation est représentée par une sous-classe de la classe SPChange . Les propriétés de la classe SPChange parent contiennent des informations de base concernant une modification, y compris le type de modification, tel que représenté par la propriété ChangeType ; l'heure de la modification, tel que représenté par la propriété Time ; et l'ID de la collection de sites dans laquelle la modification a été apportée, tel que représenté par la propriété SiteId .

Les propriétés des sous-classes de SPChange contiennent des informations spécifiques au type d'objet qui a été modifié. Par exemple, la classe SPChangeItem représente une modification apportée à un objet SPListItem et par conséquent ne possède une propriété ListId qui identifie la liste dans laquelle l'élément a été modifié. De même, la classe SPChangeList représente une modification apportée à une liste et possède une propriété WebId qui identifie le site Web où la liste a été modifiée.

Le journal des modifications n'enregistre pas les modifications apportées à tous les objets de SharePoint, uniquement pour les types d'objets sélectionnés. Les types d'objets qui sont suivies dans le journal des modifications sont répertoriés dans le tableau suivant, en même temps que les sous-classes de SPChange qui représentent les modifications correspondantes.

Sous-classe

Représente des modifications

SPChangeAlert

objets SPAlert .

SPChangeContentType

objets SPContentType .

SPChangeField

objets SPField .

SPChangeFile

SPFile les objets qui existent en dehors d'une liste et n'ont pas d'éléments correspondants.

SPChangeFolder

SPFolder les objets qui existent en dehors d'une liste et n'ont pas d'éléments correspondants.

SPChangeGroup

objets SPGroup .

SPChangeItem

les objets SPListItem et les fichiers et les dossiers qui peuvent leur être associées.

SPChangeList

objets SPList .

SPChangeSecurityPolicy

objets SPPolicy .

SPChangeSite

objets SPSite .

SPChangeUser

objets SPUser .

SPChangeView

objets SPView .

SPChangeWeb

objets SPWeb .

Utilisez la méthode GetChanges de l'objet SPList, SPWeb, SPSiteou SPContentDatabase pour renvoyer un objet SPChangeCollection avec les modifications qui se sont produites dans une étendue donnée. Vous pouvez énumérer la collection et examine chacun de ses membres individuellement.

Le nombre total de modifications retournées par une requête sur le journal des modifications peut être très volumineux, en fonction de la période de rétention définie pour le journal et l'étendue de la requête. Pour des raisons de performances, les modifications sont renvoyées par lots d'une certaine taille. Si vous souhaitez que toutes les modifications apportées, plutôt que seul le premier lot, votre code doit appeler la méthode GetChanges dans une boucle jusqu'à ce qu'elle retourne une collection avec des changements de zéro, ce qui signifie qu'il a atteint la fin du journal. Vous pouvez utiliser la ChangeToken à partir de la dernière modification du premier lot pour obtenir le deuxième lot, et ainsi de suite jusqu'à ce que vous obtenez une collection vide.

Vous pouvez également passer un objet SPChangeQuery à la méthode GetChanges . Cet objet possède les propriétés que vous pouvez utiliser pour filtrer les modifications par type d'objet et par type de modification. Vous pouvez également régler la taille de la collection qui est retournée sur un seul aller-retour en définissant la propriété FetchLimit de l'objet SPChangeQuery .

For more information about working with the change log, see Using the Change Log.

Exemples

L'exemple suivant récupère toutes les entrées dans le journal des modifications d'une base de données de contenu et imprime des informations sur chaque modification de la console.

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

Cohérence de thread

Tous les membres statique (Partagé dans Visual Basic)s publics de ce type sont thread-safe. Cela n’est pas garanti pour les membres d’instance.

Voir aussi

Référence

SPChange - Membres

Microsoft.SharePoint - Espace de noms

Autres ressources

Using the Change Log

Hiérarchie d’héritage

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