GetLocalVersions メソッド
派生クラスでオーバーライドされると、このレプリカに格納されている項目および変更単位のバージョンが含まれた変更バッチを取得します。これらの項目と変更単位は、他のプロバイダーから送信された変更バッチで参照されている項目と変更単位に対応します。
名前空間: Microsoft.Synchronization.MetadataStorage
アセンブリ: Microsoft.Synchronization.MetadataStorage (Microsoft.Synchronization.MetadataStorage.dll 内)
構文
'宣言
Public MustOverride Function GetLocalVersions ( _
sourceChanges As ChangeBatch _
) As IEnumerable(Of ItemChange)
'使用
Dim instance As ReplicaMetadata
Dim sourceChanges As ChangeBatch
Dim returnValue As IEnumerable(Of ItemChange)
returnValue = instance.GetLocalVersions(sourceChanges)
public abstract IEnumerable<ItemChange> GetLocalVersions(
ChangeBatch sourceChanges
)
public:
virtual IEnumerable<ItemChange^>^ GetLocalVersions(
ChangeBatch^ sourceChanges
) abstract
abstract GetLocalVersions :
sourceChanges:ChangeBatch -> IEnumerable<ItemChange>
public abstract function GetLocalVersions(
sourceChanges : ChangeBatch
) : IEnumerable<ItemChange>
パラメーター
- sourceChanges
型 : Microsoft.Synchronization. . :: . .ChangeBatch
別のプロバイダーからの変更バッチのうち、このレプリカに関連付けられている項目ストアに適用される直前の変更バッチです。
戻り値
型 : System.Collections.Generic. . :: . .IEnumerable< (Of < ( <'ItemChange> ) > ) >
このレプリカに格納されている項目および変更単位のバージョンのうち、他のプロバイダーからの変更バッチで参照された項目および変更単位に対応しているバージョンが含まれた変更バッチです。
例外
例外 | 条件 |
---|---|
ObjectDisposedException | オブジェクトが破棄されているか、正しく初期化されていません。 |
ArgumentNullException | sourceChanges が null Nothing nullptr unit NULL 参照 (Visual Basic では Nothing) です。 |
説明
このメソッドを使用すると、同期プロバイダーは ProcessChangeBatch メソッドを実装できるようになります。
変更適用元は、このメソッドから返される変更バッチのバージョンを使用して競合を検出します。
実装に関するメモ
このメソッドから返される変更バッチには、変更単位のエントリを含め、sourceChanges のエントリごとに 1 つのエントリが格納されている必要があります。項目が項目ストアに存在する場合、その項目エントリには、このレプリカのバージョン情報が含まれている必要があります。項目が存在しない場合、その項目のバージョンは SyncVersion.UnknownVersion に設定し、その項目の ItemChange.ChangeKind プロパティは UnknownItem に設定する必要があります。
例
次の例では、GetLocalVersions を使用して同期元の変更の同期先バージョンを取得し、結果を NotifyingChangeApplier..::..ApplyChanges に渡すことで、KnowledgeSyncProvider..::..ProcessChangeBatch を実装します。
public override void ProcessChangeBatch(ConflictResolutionPolicy resolutionPolicy, ChangeBatch sourceChanges, object changeDataRetriever, SyncCallbacks syncCallbacks, SyncSessionStatistics sessionStatistics)
{
// Use the metadata storage service to get the local versions of changes received from the source provider.
IEnumerable<ItemChange> localVersions = _ContactStore.ContactReplicaMetadata.GetLocalVersions(sourceChanges);
// Use a NotifyingChangeApplier object to process the changes. Note that this object is passed as the INotifyingChangeApplierTarget
// object that will be called to apply changes to the item store.
NotifyingChangeApplier changeApplier = new NotifyingChangeApplier(ContactStore.ContactIdFormatGroup);
changeApplier.ApplyChanges(resolutionPolicy, sourceChanges, (IChangeDataRetriever)changeDataRetriever,
localVersions, _ContactStore.ContactReplicaMetadata.GetKnowledge(),
_ContactStore.ContactReplicaMetadata.GetForgottenKnowledge(), this, _sessionContext, syncCallbacks);
}