Partager via


Méthode ReplicaMetadata.GetFilteredChangeBatch

En cas de substitution dans une classe dérivée, obtient un lot de modifications qui contient les métadonnées d'élément pour les éléments qui ne sont pas contenus dans la connaissance spécifiée du fournisseur de destination et qui sont acceptés par le filtre spécifié.

Espace de noms: Microsoft.Synchronization.MetadataStorage
Assembly: Microsoft.Synchronization.MetadataStorage (dans microsoft.synchronization.metadatastorage.dll)

Syntaxe

'Déclaration
Public MustOverride Function GetFilteredChangeBatch ( _
    batchSize As UInteger, _
    destinationKnowledge As SyncKnowledge, _
    filterInfo As FilterInfo, _
    filterCallback As ItemFilterCallback _
) As ChangeBatch
'Utilisation
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

Paramètres

  • batchSize
    Taille du lot à créer.
  • destinationKnowledge
    Connaissance du fournisseur de destination.
  • filterInfo
    Informations sur le filtre qui contrôle les éléments qui sont inclus dans le lot de modifications.
  • filterCallback
    Délégué appelé pour déterminer si l'élément doit être ajouté au lot.

Valeur de retour

Lot de modifications qui contient les métadonnées des éléments qui ne sont pas contenus dans la connaissance spécifiée du fournisseur de destination et qui sont acceptés par le filtre spécifié.

Exceptions

Type d'exception Condition

ObjectDisposedException

L'objet a été supprimé ou n'a pas été initialisé correctement.

ArgumentOutOfRangeException

batchSize est 0.

ArgumentNullException

destinationKnowledge est une référence nulle (Rien dans Visual Basic) ou filterInfo est une référence nulle (Rien dans Visual Basic).

Notes

Cette méthode permet à un fournisseur de synchronisation d'implémenter sa méthode GetChangeBatch lorsqu'une synchronisation filtrée a été spécifiée.

Le délégué filterCallback sera appelé avant que chaque élément soit ajouté à un lot. Si le délégué retourne true, l'élément est ajouté au lot ; sinon, il n'est pas ajouté.

Avant que les fournisseurs n'appellent cette méthode, ils doivent s'assurer que les versions dans le magasin des métadonnées reflètent toutes les modifications locales, y compris les suppressions. Cette opération est accomplie par le biais d'une passe de maintenance des métadonnées explicite pour énumérer des éléments et mettre à jour leurs métadonnées.

L'implémentation de cette classe qui est disponible via SqlMetadataStore ajoute des modifications au lot de modifications dans l'ordre de l'ID global.

L'implémentation de cette classe qui est disponible via SqlMetadataStore affecte à IsLastBatch la valeur true sur le lot de modifications retourné quand il n'y a plus de modifications à envoyer.

Remarques à l'attention des implémenteurs : Pour aider un fournisseur qui utilise un ordre d'ID global et a la capacité d'utiliser des plages, les modifications doivent être énumérées et ajoutées au lot de modifications en ordre d'ID global. La première modification dans le lot de modifications retourné démarre une nouvelle plage. S'il n'y a plus de modifications à envoyer après ce lot, la propriété IsLastBatch doit avoir la valeur true sur le lot de modifications retourné, sans quoi Sync Framework appellera encore la méthode GetChangeBatch pour récupérer un autre lot de modifications.

Exemple

L'exemple suivant crée un objet ItemListFilterInfo et l'utilise, avec une implémentation de ReplicaMetadata.ItemFilterCallback pour récupérer un lot de modifications filtré. L'implémentation de ReplicaMetadata.ItemFilterCallback est également incluse.

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

Voir aussi

Référence

Classe ReplicaMetadata
Membres ReplicaMetadata
Espace de noms Microsoft.Synchronization.MetadataStorage