(SPChangeQuery) del método SPSite.GetChanges
Devuelve una colección de los cambios del registro de cambios filtrado por la consulta especificada.
Espacio de nombres: Microsoft.SharePoint
Ensamblado: Microsoft.SharePoint (en Microsoft.SharePoint.dll)
Sintaxis
'Declaración
Public Function GetChanges ( _
query As SPChangeQuery _
) As SPChangeCollection
'Uso
Dim instance As SPSite
Dim query As SPChangeQuery
Dim returnValue As SPChangeCollection
returnValue = instance.GetChanges(query)
public SPChangeCollection GetChanges(
SPChangeQuery query
)
Parámetros
query
Tipo: Microsoft.SharePoint.SPChangeQueryUn objeto SPChangeQuery que representa la consulta.
Valor devuelto
Tipo: Microsoft.SharePoint.SPChangeCollection
Una colección de objetos SPChange que representan los cambios. Puede ajustar el tamaño máximo de la colección estableciendo la propiedad FetchLimit del objeto SPChangeQuery que se pasa en el parámetro de consulta.
Comentarios
Use este método para filtrar los cambios cuando se le interesan sólo en los cambios a objetos particulares, en lugar de todos los objetos, o solo en acciones seleccionadas en objetos particulares. Para obtener más información, vea la documentación de la clase SPChangeQuery .
Nota
De forma predeterminada, el registro de cambios conserva los datos de 60 días. Puede configurar el período de retención estableciendo la propiedad ChangeLogRetentionPeriod .
Ejemplos
En el siguiente ejemplo es una aplicación de consola que las consultas que el cambio de registro para todos los agregar, eliminación y actualización las operaciones de tipos de contenido en una colección de sitios. Tenga en cuenta que la aplicación llama al método de GetChanges en un bucle, obtención de cambios por lotes hasta que han sido recuperados todos los cambios.
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
Vea también
Referencia
Espacio de nombres Microsoft.SharePoint