Partager via


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

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

SPSite classe

SPSite - Membres

GetChanges - Surcharge

Microsoft.SharePoint - Espace de noms

SPChangeQuery

Autres ressources

Using the Change Log