Compartir a través de


Clase SPChangeCollection

Representa una colección de objetos derivados de la clase SPChange .

Jerarquía de la herencia

System.Object
  Microsoft.SharePoint.Administration.SPAutoSerializingObject
    Microsoft.SharePoint.SPBaseCollection
      Microsoft.SharePoint.SPChangeCollection

Espacio de nombres:  Microsoft.SharePoint
Ensamblado:  Microsoft.SharePoint (en Microsoft.SharePoint.dll)

Sintaxis

'Declaración
Public NotInheritable Class SPChangeCollection _
    Inherits SPBaseCollection
'Uso
Dim instance As SPChangeCollection
public sealed class SPChangeCollection : SPBaseCollection

Comentarios

Utilice el método GetChanges del objeto SPList, SPWeb, SPSiteo SPContentDatabase para devolver un objeto SPChangeCollection con los cambios que se han producido en un ámbito determinado. Puede enumerar la colección y examine cada uno de sus miembros individualmente.

Cada objeto del SPChangeCollection que devuelve el método GetChanges es una subclase de la clase SPChange. Las propiedades de la clase SPChange primaria contienen información básica sobre un cambio, incluido el tipo de cambio, representado por la propiedad ChangeType; la hora del cambio, representada por la propiedad Time; y el identificador de la colección de sitios en la que se realizó el cambio, representado por la propiedad SiteId. Las propiedades de subclases de SPChange contienen información específica del tipo de objeto que se cambió. Por ejemplo, la clase SPChangeItem representa un cambio a un objeto SPListItem y, por lo tanto, tiene una propiedad ListId que identifica la lista en la que se cambió el elemento. De forma similar, la clase SPChangeList representa un cambio en una lista y tiene una propiedad WebId que identifica el sitio web en que se cambió la lista.

El número total de cambios devueltos por una consulta en el registro de cambios podría ser muy grande, según el periodo de retención establecido para el registro y el ámbito de la consulta. Por motivos de rendimiento, los cambios se devuelven en lotes del tamaño limitado. Si desea que todos los cambios en lugar de sólo el primer lote, el código debe llamar al método de GetChanges en un bucle hasta que devuelve una colección con cero cambios, lo que significa que ha alcanzado el final del registro. Puede usar el ChangeToken desde el último cambio de la primera sección para obtener el segundo lote, y así sucesivamente hasta que obtenga una colección vacía.

Como alternativa, puede pasar un objeto SPChangeQuery para el método GetChanges . Este objeto tiene propiedades que pueden usar para filtrar los cambios por tipo de objeto y por tipo de cambio. También puede ajustar el tamaño de la colección que se devuelve en un único de ida y vuelta estableciendo la SPChangeQuery propiedad del objeto FetchLimit .

Para obtener más información sobre cómo trabajar con el registro de cambios, vea Using the Change Log.

Ejemplos

En el siguiente ejemplo es una aplicación de consola sencilla que consulta el registro de cambios para los elementos que se agrega, actualiza o elimina de una lista especificada. Después de recuperar los cambios, la aplicación examina cada cambio e imprime la fecha de cambio, tipo de cambio y el nombre del elemento que se ha cambiado a la consola.

Imports System
Imports Microsoft.SharePoint

Module ConsoleApp
   Sub Main()
      Using siteCollection As SPSite = New SPSite("https://localhost")
         Using webSite As SPWeb = siteCollection.OpenWeb()

            ' Get a list.
            Dim list As SPList = webSite.Lists(0)

            ' Construct a query
            Dim query As New SPChangeQuery(False, False)

            ' Specify the object type. 
            query.Item = True

            ' Specify change types. 
            query.Add = True
            query.Delete = True
            query.Update = True

            Dim timeZone As SPTimeZone = webSite.RegionalSettings.TimeZone
            Dim total As Integer = 0

            ' Loop until we reach the end of the log.
            While True

               Dim changes As SPChangeCollection = list.GetChanges(query)

               total += changes.Count

               ' Print info about each change to the console.
               For Each change As SPChangeItem In changes
                  ' Get the item name.
                  Dim itemName As String = String.Empty
                  Dim item As SPListItem = Nothing
                  Try
                     item = list.GetItemByUniqueId(change.UniqueId)
                     itemName = item.Name
                  Catch ex As ArgumentException
                     itemName = "Unknown"
                  End Try

                  Console.WriteLine(vbCrLf + "Date: {0}", timeZone.UTCToLocalTime(change.Time).ToString())
                  Console.WriteLine("Change: {0}", change.ChangeType)
                  Console.WriteLine("Item: {0}", itemName)

               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 of {0:#,#} changes to {1} list", total, list.Title)

         End Using
      End Using

      Console.Write(vbCrLf + "Press ENTER to continue...")
      Console.ReadLine()

   End Sub
End Module

Seguridad para subprocesos

Los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para los subprocesos.

Vea también

Referencia

Miembros SPChangeCollection

Espacio de nombres Microsoft.SharePoint