RecoverableErrorReportingContext.RecordConstraintError メソッド
項目に変更の適用を試みたときに発生した制約エラーを記録します。変更との間で制約の競合が発生しているローカル項目を記述するために使用します。
名前空間: Microsoft.Synchronization.SimpleProviders
アセンブリ: Microsoft.Synchronization.SimpleProviders (microsoft.synchronization.simpleproviders.dll 内)
構文
'宣言
Public Sub RecordConstraintError ( _
conflictingItemKey As ItemFieldDictionary _
)
'使用
Dim instance As RecoverableErrorReportingContext
Dim conflictingItemKey As ItemFieldDictionary
instance.RecordConstraintError(conflictingItemKey)
public void RecordConstraintError (
ItemFieldDictionary conflictingItemKey
)
public:
void RecordConstraintError (
ItemFieldDictionary^ conflictingItemKey
)
public void RecordConstraintError (
ItemFieldDictionary conflictingItemKey
)
public function RecordConstraintError (
conflictingItemKey : ItemFieldDictionary
)
パラメーター
- conflictingItemKey
制約エラーが記録される項目のキー。
例外
例外の種類 | 条件 |
---|---|
制約が競合した結果、適用されている変更がプロバイダーによって次の同期セッションまで保留されました。 |
|
制約エラーが複数発生したか、無効なオブジェクトで制約エラーが報告されたか、または制約エラーのポリシーによって制約エラーを復旧可能にすることができません。 |
解説
この変更は、同期セッション内で後から再適用または解決されます。制約の競合の詳細については、「簡易プロバイダーの競合処理」を参照してください。
例
次のコード例では、メモリ内のサンプル データ ストアに挿入を適用する InsertItem メソッドの実装を示します。挿入を適用できない場合、このメソッドは制約エラーを記録します。完全なアプリケーションのコンテキストでこのコードを表示するには、Sync Framework SDK やCode Galleryから入手できる "Sync101 using Simple Sync Provider"
アプリケーションを参照してください。
public override void InsertItem(object itemData,
IEnumerable<SyncId> changeUnitsToCreate,
RecoverableErrorReportingContext recoverableErrorReportingContext,
out ItemFieldDictionary keyAndUpdatedVersion,
out bool commitKnowledgeAfterThisItem)
{
ItemTransfer transfer = (ItemTransfer)itemData;
ItemData dataCopy = new ItemData(transfer.ItemData);
// Check for duplicates, and record a constraint error if a duplicate is detected.
if (!_store.Contains(transfer.Id))
{
_store.CreateItem(dataCopy, transfer.Id);
keyAndUpdatedVersion = _store.CreateItemFieldDictionary(transfer.Id);
}
else
{
recoverableErrorReportingContext.RecordConstraintError(_store.CreateItemFieldDictionary(transfer.Id));
keyAndUpdatedVersion = null;
}
commitKnowledgeAfterThisItem = false;
}
Public Overrides Sub InsertItem(ByVal itemData As Object, ByVal changeUnitsToCreate As IEnumerable(Of SyncId), ByVal recoverableErrorReportingContext As RecoverableErrorReportingContext, ByRef keyAndUpdatedVersion As ItemFieldDictionary, ByRef commitKnowledgeAfterThisItem As Boolean)
Dim transfer As ItemTransfer = DirectCast(itemData, ItemTransfer)
Dim dataCopy As New ItemData(transfer.ItemData)
' Check for duplicates, and record a constraint error if a duplicate is detected.
If Not _store.Contains(transfer.Id) Then
_store.CreateItem(dataCopy, transfer.Id)
keyAndUpdatedVersion = _store.CreateItemFieldDictionary(transfer.Id)
Else
recoverableErrorReportingContext.RecordConstraintError(_store.CreateItemFieldDictionary(transfer.Id))
keyAndUpdatedVersion = Nothing
End If
commitKnowledgeAfterThisItem = False
End Sub
参照
リファレンス
RecoverableErrorReportingContext クラス
RecoverableErrorReportingContext メンバー
Microsoft.Synchronization.SimpleProviders 名前空間