다음을 통해 공유


ReplicaMetadata.GetFilteredChangeBatch 메서드

파생 클래스에서 재정의되면 대상 공급자의 지정된 정보에 포함되지 않은 항목 중 지정된 필터에 의해 허용되는 항목에 대한 항목 메타데이터를 포함하는 변경 내용 일괄 처리를 가져옵니다.

네임스페이스: Microsoft.Synchronization.MetadataStorage
어셈블리: microsoft.synchronization.metadatastorage.dll의 Microsoft.Synchronization.MetadataStorage

구문

‘선언
Public MustOverride Function GetFilteredChangeBatch ( _
    batchSize As UInteger, _
    destinationKnowledge As SyncKnowledge, _
    filterInfo As FilterInfo, _
    filterCallback As ItemFilterCallback _
) As ChangeBatch
‘사용 방법
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

매개 변수

  • batchSize
    만들 일괄 처리의 크기입니다.
  • destinationKnowledge
    대상 공급자의 정보입니다.
  • filterInfo
    변경 내용 일괄 처리에 포함될 항목을 제어하는 필터에 대한 정보입니다.
  • filterCallback
    일괄 처리에 항목을 추가해야 하는지 여부를 결정하기 위해 호출되는 대리자입니다.

반환 값

대상 공급자의 지정된 정보에 포함되지 않은 항목에 대한 항목 메타데이터를 포함하는 변경 내용 일괄 처리 중 지정된 필터에 의해 허용되는 변경 내용 일괄 처리입니다.

예외

예외 형식 조건

ObjectDisposedException

개체가 삭제되었거나, 올바르게 초기화되지 않았습니다.

ArgumentOutOfRangeException

batchSize가 0입니다.

ArgumentNullException

destinationKnowledge가 null 참조(Visual Basic에서는 Nothing)이거나, filterInfo가 null 참조(Visual Basic에서는 Nothing)입니다.

주의

이 메서드는 필터링된 동기화가 지정되었을 때 동기화 공급자가 GetChangeBatch 메서드를 구현하는 데 도움이 됩니다.

filterCallback 대리자는 일괄 처리에 각 항목이 추가되기 전에 호출됩니다. 대리자가 true를 반환하면 일괄 처리에 항목이 추가되고, 그렇지 않으면 항목이 추가되지 않습니다.

이 메서드를 호출하기 전에 공급자는 메타데이터 저장소의 버전에 삭제 항목 등을 비롯한 모든 로컬 변경 내용이 반영되어 있는지 확인해야 합니다. 이는 항목을 열거하고 해당 메타데이터를 업데이트하는 명시적 메타데이터 유지 관리 작업을 통해 수행할 수 있습니다.

SqlMetadataStore를 통해 사용 가능한 이 클래스의 구현은 변경 내용 일괄 처리에 전역 ID 순서대로 변경 내용을 추가합니다.

SqlMetadataStore를 통해 사용 가능한 이 클래스의 구현은 보낼 변경 내용이 더 이상 없으면 반환된 변경 내용 일괄 처리에 대해 IsLastBatchtrue로 설정합니다.

구현자를 위한 정보: 전역 ID 순서를 사용하며 범위 사용 기능이 있는 공급자에 도움이 되도록 변경 내용을 열거하여 변경 내용 일괄 처리에 전역 ID 순서대로 추가해야 합니다. 반환된 변경 내용 일괄 처리의 첫 번째 변경 내용이 새 범위를 시작합니다. 이 일괄 처리 이후 보낼 변경 내용이 더 이상 없으면 반환된 일괄 변경 내용에 대해 IsLastBatchtrue로 설정해야 합니다. 그렇지 않으면 Sync Framework가 GetChangeBatch를 다시 호출하여 다른 일괄 변경 내용을 검색합니다.

예제

다음 예제에서는 ItemListFilterInfo 개체를 만들고 ReplicaMetadata.ItemFilterCallback 구현과 함께 이 개체를 사용하여 필터링된 일괄 변경 내용을 검색합니다. 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);
}

참고 항목

참조

ReplicaMetadata 클래스
ReplicaMetadata 멤버
Microsoft.Synchronization.MetadataStorage 네임스페이스