GetFilteredChangeBatch Método

Cuando se invalida en una clase derivada, obtiene un lote de cambios que contiene los metadatos del elemento para los elementos no contenidos en el conocimiento especificado del proveedor de destino y que son aceptados por el filtro especificado.

Espacio de nombres:  Microsoft.Synchronization.MetadataStorage
Ensamblado:  Microsoft.Synchronization.MetadataStorage (en Microsoft.Synchronization.MetadataStorage.dll)

Sintaxis

'Declaración
Public MustOverride Function GetFilteredChangeBatch ( _
    batchSize As UInteger, _
    destinationKnowledge As SyncKnowledge, _
    filterInfo As FilterInfo, _
    filterCallback As ReplicaMetadata..::..ItemFilterCallback _
) As ChangeBatch
'Uso
Dim instance As ReplicaMetadata
Dim batchSize As UInteger
Dim destinationKnowledge As SyncKnowledge
Dim filterInfo As FilterInfo
Dim filterCallback As ReplicaMetadata..::..ItemFilterCallback
Dim returnValue As ChangeBatch

returnValue = instance.GetFilteredChangeBatch(batchSize, _
    destinationKnowledge, filterInfo, _
    filterCallback)
public abstract ChangeBatch GetFilteredChangeBatch(
    uint batchSize,
    SyncKnowledge destinationKnowledge,
    FilterInfo filterInfo,
    ReplicaMetadata..::..ItemFilterCallback filterCallback
)
public:
virtual ChangeBatch^ GetFilteredChangeBatch(
    unsigned int batchSize, 
    SyncKnowledge^ destinationKnowledge, 
    FilterInfo^ filterInfo, 
    ReplicaMetadata..::..ItemFilterCallback^ filterCallback
) abstract
abstract GetFilteredChangeBatch : 
        batchSize:uint32 * 
        destinationKnowledge:SyncKnowledge * 
        filterInfo:FilterInfo * 
        filterCallback:ReplicaMetadata..::..ItemFilterCallback -> ChangeBatch 
public abstract function GetFilteredChangeBatch(
    batchSize : uint, 
    destinationKnowledge : SyncKnowledge, 
    filterInfo : FilterInfo, 
    filterCallback : ReplicaMetadata..::..ItemFilterCallback
) : ChangeBatch

Parámetros

Valor devuelto

Tipo: Microsoft.Synchronization. . :: . .ChangeBatch
Lote de cambios que contiene metadatos de elemento para los elementos no contenidos en el conocimiento especificado del proveedor de destino y que son aceptados por el filtro especificado.

Excepciones

Excepción Condición
ObjectDisposedException

El objeto se ha eliminado o no se ha inicializado correctamente.

ArgumentOutOfRangeException

batchSize es 0.

ArgumentNullException

destinationKnowledge es un valor null Nothing nullptr unit es una referencia NULL (Nothing en Visual Basic). o filterInfo es un valor null Nothing nullptr unit es una referencia NULL (Nothing en Visual Basic). .

Notas

Este método ayuda a un proveedor de sincronización a implementar su método GetChangeBatch cuando se ha especificado una sincronización filtrada.

Se llamará al delegado filterCallback antes de agregar cada elemento a un lote. Si el delegado devuelve true, el elemento se agrega al lote; en caso contrario, no se agrega.

Antes de que los proveedores llamen a este método, deben asegurarse de que las versiones del almacén de metadatos reflejan todos los cambios locales, incluso las eliminaciones. Esto se logra mediante un examen explícito de mantenimiento de metadatos para enumerar los elementos y actualizar sus metadatos.

La implementación de esta clase que está disponible mediante SqlMetadataStore agrega cambios ordenados según su identificador global al lote de cambios.

La implementación de esta clase que está disponible mediante SqlMetadataStore establece IsLastBatch en true en el lote de cambios devuelto cuando no quedan cambios por enviar.

Notas a los implementadores

Para ayudar a un proveedor que usa la ordenación por identificadores globales y tiene la capacidad de usar intervalos, los cambios se deberían enumerar y agregar al lote de cambios de acuerdo con el orden de los identificadores globales. El primer cambio del lote de cambios devuelto inicia un nuevo intervalo.

Si no queda ningún cambio por enviar después de este lote, IsLastBatch debe establecerse en true en el lote de cambios devuelto o Sync Framework llamará de nuevo a GetChangeBatch()()()() para recuperar otro lote de cambios.

Ejemplos

En el ejemplo siguiente se crea un objeto ItemListFilterInfo que se usa, junto con una implementación de ReplicaMetadata..::..ItemFilterCallback, para recuperar un lote de cambios filtrado. También se incluye la implementación de ReplicaMetadata..::..ItemFilterCallback.

Public Overrides Function GetChangeBatch(ByVal batchSize As UInteger, ByVal destinationKnowledge As SyncKnowledge, ByRef changeDataRetriever As Object) As ChangeBatch
    ' Return this object as the IChangeDataRetriever object that is called to retrieve item data.
    changeDataRetriever = Me

    ' Use the metadata storage service to get a batch of changes.
    Dim retrievedBatch As ChangeBatch
    If _isFiltered Then
        ' If a filter is set, get a filtered change batch from the metadata storage service.
        ' The BirthdateFilterCallback method indicates whether an item passes the filter.
        Dim filterInfo As New ItemListFilterInfo(IdFormats)
        retrievedBatch = _ContactStore.ContactReplicaMetadata.GetFilteredChangeBatch(batchSize, destinationKnowledge, filterInfo, AddressOf BirthdateFilterCallback)
    Else
        retrievedBatch = _ContactStore.ContactReplicaMetadata.GetChangeBatch(batchSize, destinationKnowledge)
    End If

    Return retrievedBatch
End Function
Public Function BirthdateFilterCallback(ByVal itemMeta As ItemMetadata) As Boolean
    ' An item passes the filter only if its birthdate field is less than the maximum birthdate
    ' specified by the filter.
    Return (_ContactStore.ContactList(itemMeta.GlobalId).Birthdate < _maxBirthdateFilter)
End Function
public override ChangeBatch GetChangeBatch(uint batchSize, SyncKnowledge destinationKnowledge, out object changeDataRetriever)
{
    // Return this object as the IChangeDataRetriever object that is called to retrieve item data.
    changeDataRetriever = this;

    // Use the metadata storage service to get a batch of changes.
    ChangeBatch retrievedBatch;
    if (_isFiltered)
    {
        // If a filter is set, get a filtered change batch from the metadata storage service.
        // The BirthdateFilterCallback method indicates whether an item passes the filter.
        ItemListFilterInfo filterInfo = new ItemListFilterInfo(IdFormats);
        retrievedBatch = _ContactStore.ContactReplicaMetadata.GetFilteredChangeBatch(batchSize, destinationKnowledge,
            filterInfo, BirthdateFilterCallback);
    }
    else
    {
        retrievedBatch = _ContactStore.ContactReplicaMetadata.GetChangeBatch(batchSize, destinationKnowledge);
    }

    return retrievedBatch;
}
public bool BirthdateFilterCallback(ItemMetadata itemMeta)
{
    // An item passes the filter only if its birthdate field is less than the maximum birthdate
    // specified by the filter.
    return (_ContactStore.ContactList[itemMeta.GlobalId].Birthdate < _maxBirthdateFilter);
}

Vea también

Referencia

ReplicaMetadata Clase

ReplicaMetadata Miembros

Microsoft.Synchronization.MetadataStorage Espacio de nombres