Metodo ReplicaMetadata.GetFilteredChangeBatch
Quando sottoposto a override in una classe derivata, ottiene un batch di modifiche contenente i metadati dell'elemento per gli elementi non contenuti nella conoscenza specificata del provider di destinazione e che sono accettati dal filtro specificato.
Spazio dei nomi: Microsoft.Synchronization.MetadataStorage
Assembly: Microsoft.Synchronization.MetadataStorage (in microsoft.synchronization.metadatastorage.dll)
Sintassi
'Dichiarazione
Public MustOverride Function GetFilteredChangeBatch ( _
batchSize As UInteger, _
destinationKnowledge As SyncKnowledge, _
filterInfo As FilterInfo, _
filterCallback As ItemFilterCallback _
) As ChangeBatch
'Utilizzo
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
Parametri
- batchSize
Dimensione del batch da creare.
- destinationKnowledge
Conoscenza del provider di destinazione.
- filterInfo
Informazioni sul filtro che controlla gli elementi da includere nel batch di modifiche.
- filterCallback
Delegato chiamato per determinare se l'elemento deve essere aggiunto al batch.
Valore restituito
Batch di modifiche contenente i metadati dell'elemento per gli elementi non inclusi nella conoscenza specificata dal provider di destinazione e accettati dal filtro specificato.
Eccezioni
Tipo di eccezione | Condizione |
---|---|
L'oggetto è stato eliminato o non è stato inizializzato correttamente. |
|
batchSize è 0. |
|
destinationKnowledge è Null o filterInfo è Null. |
Osservazioni
Questo metodo consente a un provider di sincronizzazione di implementare il relativo metodo GetChangeBatch quando è stata specificata una sincronizzazione filtrata.
Il delegato filterCallback verrà chiamato prima dell'aggiunta di ogni elemento a un batch. Se il delegato restituisce true, l'elemento verrà aggiunto al batch; in caso contrario, non verrà aggiunto.
Prima di chiamare questo metodo, i provider devono assicurarsi che le versioni nell'archivio dei metadati riflettano tutte le modifiche locali, incluse le eliminazioni. Questo risultato si ottiene tramite un passaggio di manutenzione esplicito dei metadati per enumerare gli elementi e aggiornare i relativi metadati.
L'implementazione di questa classe disponibile tramite SqlMetadataStore aggiunge modifiche al batch di modifiche nell'ordine ID globale.
L'implementazione di questa classe disponibile tramite SqlMetadataStore imposta IsLastBatch su true sul batch di modifiche restituito quando non sono più disponibili modifiche da inviare.
Note per gli implementatori: Per assistere un provider che utilizza l'ordinamento ID globale e ha la possibilità di utilizzare gli intervalli, le modifiche devono essere enumerate e aggiunte al batch di modifiche nell'ordine ID globale. La prima modifica nel batch di modifiche restituito comporta l'inizio di un nuovo intervallo. Se non sono disponibili altre modifiche da inviare dopo questo batch, è necessario impostare IsLastBatch su true nel batch di modifiche restituite. In caso contrario, Sync Framework eseguirà una nuova chiamata a GetChangeBatch per recuperare un altro batch di modifiche.
Esempio
Nell'esempio seguente viene creato un oggetto ItemListFilterInfo e viene utilizzato con un'implementazione di ReplicaMetadata.ItemFilterCallback per recuperare un batch di modifiche filtrate. È inclusa anche l'implementazione di 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);
}
Vedere anche
Riferimento
Classe ReplicaMetadata
Membri ReplicaMetadata
Spazio dei nomi Microsoft.Synchronization.MetadataStorage