ReplicaMetadata.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 ItemFilterCallback _
) As ChangeBatch
'Uso
Dim instance As ReplicaMetadata
Dim batchSize As UInteger
Dim destinationKnowledge As SyncKnowledge
Dim filterInfo As FilterInfo
Dim filterCallback As ItemFilterCallback
Dim returnValue As ChangeBatch
returnValue = instance.GetFilteredChangeBatch(batchSize, destinationKnowledge, filterInfo, filterCallback)
public abstract ChangeBatch GetFilteredChangeBatch (
uint batchSize,
SyncKnowledge destinationKnowledge,
FilterInfo filterInfo,
ItemFilterCallback filterCallback
)
public:
virtual ChangeBatch^ GetFilteredChangeBatch (
unsigned int batchSize,
SyncKnowledge^ destinationKnowledge,
FilterInfo^ filterInfo,
ItemFilterCallback^ filterCallback
) abstract
public abstract ChangeBatch GetFilteredChangeBatch (
UInt32 batchSize,
SyncKnowledge destinationKnowledge,
FilterInfo filterInfo,
ItemFilterCallback filterCallback
)
public abstract function GetFilteredChangeBatch (
batchSize : uint,
destinationKnowledge : SyncKnowledge,
filterInfo : FilterInfo,
filterCallback : ItemFilterCallback
) : ChangeBatch
Parámetros
- batchSize
Tamaño del lote que se va a crear.
- destinationKnowledge
Conocimiento del proveedor de destino.
- filterInfo
Información sobre el filtro que controla los elementos que se incluyen en el lote de cambios.
- filterCallback
Delegado al que se llama para determinar si se debería agregar el elemento al lote.
Valor devuelto
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
Tipo de excepción | Condición |
---|---|
El objeto se ha eliminado o no se ha inicializado correctamente. |
|
batchSize es 0. |
|
destinationKnowledge es un valor es una referencia nula (Nothing en Visual Basic). o filterInfo es un valor es una referencia nula (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.
Ejemplo
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