Compartilhar via


Método ReplicaMetadata.GetFilteredChangeBatch

Quando substituído em uma classe derivada, obtém um lote de alterações que contém metadados dos itens que não estão contidos no conhecimento especificado do provedor de destino e que são aceitos pelo filtro especificado.

Namespace: Microsoft.Synchronization.MetadataStorage
Assembly: Microsoft.Synchronization.MetadataStorage (em microsoft.synchronization.metadatastorage.dll)

Sintaxe

'Declaração
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
    O tamanho do lote a ser criado.
  • destinationKnowledge
    O conhecimento do provedor de destino.
  • filterInfo
    Informações sobre o filtro que controla quais itens são incluídos no lote de alterações.
  • filterCallback
    O representante chamado para determinar se o item deve ser adicionado ao lote.

Valor de retorno

Um lote de alterações que contém metadados dos itens que não estão contidos no conhecimento especificado do provedor de destino e que são aceitos pelo filtro especificado.

Exceções

Tipo de exceção Condição

ObjectDisposedException

O objeto foi descartado ou não foi inicializado corretamente.

ArgumentOutOfRangeException

batchSize é 0.

ArgumentNullException

destinationKnowledge é um referência nula (Nothing no Visual Basic) ou filterInfo é um referência nula (Nothing no Visual Basic).

Comentários

Este método ajuda um provedor de sincronização a implementar seu método GetChangeBatch quando uma sincronização filtrada foi especificada.

O representante de filterCallback será chamado antes de cada item ser adicionado a um lote. Se o representante retornar true, o item será adicionado ao lote; caso contrário, ele não será adicionado.

Antes de os provedores chamarem este método, eles devem garantir que as versões no repositório de metadados reflitam todas as alterações locais, inclusive exclusões. Isso pode ser feito por uma passagem de manutenção de metadados explícita para enumerar itens e atualizar seus metadados.

A implementação desta classe, que está disponível através de SqlMetadataStore, adiciona as alterações ao lote de alterações na ordem da ID global.

A implementação desta classe, que está disponível através de SqlMetadataStore, define IsLastBatch como true no lote de alterações retornado quando não há mais nenhuma alteração a ser enviada.

Observações para implementadores: Para ajudar um provedor que usa ordenação da ID global e tem a habilidade de usar intervalos, as alterações devem ser enumeradas e adicionadas ao lote de alterações na ordem da ID global. A primeira alteração do lote de alterações retornado inicia um novo intervalo. Se não houver mais nenhuma alteração a ser enviada depois deste lote, IsLastBatch deverá ser definido como true no lote de alterações retornado ou o Sync Framework chamará GetChangeBatch novamente para recuperar outro lote de alterações.

Exemplo

O exemplo a seguir cria um objeto ItemListFilterInfo e o usa, junto com uma implementação de ReplicaMetadata.ItemFilterCallback, para recuperar um lote de alterações filtrado. A implementação de ReplicaMetadata.ItemFilterCallback também está incluída.

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);
}

Consulte também

Referência

Classe ReplicaMetadata
Membros ReplicaMetadata
Namespace Microsoft.Synchronization.MetadataStorage