GetChangeBatch メソッド
派生クラスでオーバーライドされると、同期先プロバイダーからの指定されたナレッジに含まれていない項目に関する、項目メタデータが含まれた変更バッチを取得します。
名前空間: Microsoft.Synchronization.MetadataStorage
アセンブリ: Microsoft.Synchronization.MetadataStorage (Microsoft.Synchronization.MetadataStorage.dll 内)
構文
'宣言
Public MustOverride Function GetChangeBatch ( _
batchSize As UInteger, _
destinationKnowledge As SyncKnowledge _
) As ChangeBatch
'使用
Dim instance As ReplicaMetadata
Dim batchSize As UInteger
Dim destinationKnowledge As SyncKnowledge
Dim returnValue As ChangeBatch
returnValue = instance.GetChangeBatch(batchSize, _
destinationKnowledge)
public abstract ChangeBatch GetChangeBatch(
uint batchSize,
SyncKnowledge destinationKnowledge
)
public:
virtual ChangeBatch^ GetChangeBatch(
unsigned int batchSize,
SyncKnowledge^ destinationKnowledge
) abstract
abstract GetChangeBatch :
batchSize:uint32 *
destinationKnowledge:SyncKnowledge -> ChangeBatch
public abstract function GetChangeBatch(
batchSize : uint,
destinationKnowledge : SyncKnowledge
) : ChangeBatch
パラメーター
- batchSize
型 : System. . :: . .UInt32
作成されるバッチのサイズです。
- destinationKnowledge
型 : Microsoft.Synchronization. . :: . .SyncKnowledge
同期先プロバイダーからのナレッジです。
戻り値
型 : Microsoft.Synchronization. . :: . .ChangeBatch
同期先プロバイダーからの指定されたナレッジに含まれていない項目に関する、項目メタデータが含まれた変更バッチです。
例外
例外 | 条件 |
---|---|
ObjectDisposedException | オブジェクトが破棄されているか、正しく初期化されていません。 |
ArgumentOutOfRangeException | batchSize が 0 です。 |
ArgumentNullException | destinationKnowledge が null Nothing nullptr unit NULL 参照 (Visual Basic では Nothing) です。 |
説明
このメソッドを使用すると、同期プロバイダーは GetChangeBatch メソッドを実装できるようになります。
プロバイダーは、このメソッドを呼び出す前に、メタデータ ストア内のバージョンにローカルの変更 (削除など) がすべて反映されていることを確認する必要があります。これを行うには、メタデータを明示的にメンテナンスすることによって、項目を列挙し、そのメタデータを更新します。
SqlMetadataStore を使用することによって可能になるこのクラスの実装では、変更がグローバル ID の順で変更バッチに追加されます。
SqlMetadataStore を使用することによって可能になるこのクラスの実装では、送信する変更がなくなった場合に返される変更バッチで IsLastBatch が true に設定されます。
実装に関するメモ
グローバル ID 順を使用しており、範囲を使用できるプロバイダーをサポートするには、変更を列挙してから、変更バッチにグローバル ID 順で追加する必要があります。返された変更バッチ内の最初の変更によって新しい範囲が開始されます。
このバッチの後で送信する変更がもうない場合は、返される変更バッチで IsLastBatch を true に設定する必要があります。そうしないと、Sync Framework が GetChangeBatch()()()() を再び呼び出して、別の変更バッチを取得します。
例
次の例では、パラメーターを ReplicaMetadata..::..GetChangeBatch に渡して KnowledgeSyncProvider..::..GetChangeBatch を実装します。
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 metadata storage service to get a batch of changes.
return _ContactStore.ContactReplicaMetadata.GetChangeBatch(batchSize, destinationKnowledge);
}