GetFilteredChangeBatch-Methode

Ruft, wenn in einer abgeleiteten Klasse überschrieben, einen Änderungsbatch mit den Elementmetadaten für Elemente ab, die nicht im angegebenen Wissen des Zielanbieters enthalten sind und den angegebenen Filter passieren.

Namespace:  Microsoft.Synchronization.MetadataStorage
Assembly:  Microsoft.Synchronization.MetadataStorage (in Microsoft.Synchronization.MetadataStorage.dll)

Syntax

'Declaration
Public MustOverride Function GetFilteredChangeBatch ( _
    batchSize As UInteger, _
    destinationKnowledge As SyncKnowledge, _
    filterInfo As FilterInfo, _
    filterCallback As ReplicaMetadata..::..ItemFilterCallback _
) As ChangeBatch
'Usage
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

Parameter

Rückgabewert

Typ: Microsoft.Synchronization. . :: . .ChangeBatch
Ein Änderungsbatch mit Elementmetadaten für Elemente, die nicht im angegebenen Wissen des Zielanbieters enthalten sind und den angegebenen Filter passieren.

Ausnahmen

Ausnahme Bedingung
ObjectDisposedException

Das Objekt wurde verworfen oder nicht ordnungsgemäß initialisiert.

ArgumentOutOfRangeException

batchSize ist 0.

ArgumentNullException

destinationKnowledge ist NULL, oder filterInfo ist NULL.

Hinweise

Diese Methode unterstützt einen Synchronisierungsanbieter bei der Implementierung seiner GetChangeBatch-Methode, wenn eine gefilterte Synchronisierung angegeben wurde.

Der filterCallback-Delegat wird vor dem Hinzufügen jedes Elements zu einem Batch aufgerufen. Wenn der Delegat true zurückgibt, wird das Element dem Batch hinzugefügt; andernfalls wird es nicht hinzugefügt.

Vor dem Aufrufen dieser Methode müssen Anbieter sicherstellen, dass die Versionen im Metadatenspeicher alle lokalen Änderungen, einschließlich Löschungen, berücksichtigen. Dies wird durch einen expliziten Metadatenverwaltungsdurchlauf erreicht, in dem Elemente aufgelistet und ihre Metadaten aktualisiert werden.

Die Implementierung dieser Klasse, die durch SqlMetadataStore zur Verfügung gestellt wird, fügt dem Änderungsbatch Änderungen geordnet nach der globalen ID hinzu.

Die Implementierung dieser Klasse, die durch SqlMetadataStore zur Verfügung gestellt wird, legt IsLastBatch für den zurückgegebenen Änderungsbatch auf true fest, wenn keine zu sendenden Änderungen mehr vorhanden sind.

Hinweise für Implementierer

Um einen Anbieter, der Sortierungen nach globaler ID durchführt und Bereiche verwenden kann, zu unterstützen, sollten Änderungen in der Reihenfolge ihrer globalen ID aufgelistet und dem Änderungsbatch hinzugefügt werden. Durch die erste Änderung im zurückgegebenen Änderungsbatch wird ein neuer Bereich gestartet.

Wenn nach diesem Batch keine zu sendenden Änderungen mehr vorliegen, muss IsLastBatch für den zurückgegebenen Änderungsbatch auf true festgelegt werden. Andernfalls ruft Sync Framework erneut GetChangeBatch()()()() auf, um einen weiteren Änderungsbatch abzurufen.

Beispiele

Im nachfolgenden Beispiel wird ein ItemListFilterInfo-Objekt erstellt, das zusammen mit einer Implementierung von ReplicaMetadata..::..ItemFilterCallback verwendet wird, um einen gefilterten Änderungsbatch abzurufen. Die Implementierung von ReplicaMetadata..::..ItemFilterCallback ist ebenfalls enthalten.

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

Siehe auch

Verweis

ReplicaMetadata Klasse

ReplicaMetadata-Member

Microsoft.Synchronization.MetadataStorage-Namespace