SaveChangeContext.RecordConstraintConflictForItem メソッド (SyncId, ConstraintConflictReason)
同期先プロバイダーが同期先レプリカに変更の適用を試みたときに制約の競合が発生したことを報告し、競合している同期先項目の項目 ID を指定します。
名前空間: Microsoft.Synchronization
アセンブリ: Microsoft.Synchronization (microsoft.synchronization.dll 内)
構文
'宣言
Public Sub RecordConstraintConflictForItem ( _
conflictingItemId As SyncId, _
reason As ConstraintConflictReason _
)
'使用
Dim instance As SaveChangeContext
Dim conflictingItemId As SyncId
Dim reason As ConstraintConflictReason
instance.RecordConstraintConflictForItem(conflictingItemId, reason)
public void RecordConstraintConflictForItem (
SyncId conflictingItemId,
ConstraintConflictReason reason
)
public:
void RecordConstraintConflictForItem (
SyncId^ conflictingItemId,
ConstraintConflictReason reason
)
public void RecordConstraintConflictForItem (
SyncId conflictingItemId,
ConstraintConflictReason reason
)
public function RecordConstraintConflictForItem (
conflictingItemId : SyncId,
reason : ConstraintConflictReason
)
パラメーター
- conflictingItemId
適用する変更と競合する、同期先項目の項目 ID です。
- reason
競合が発生した理由です。
例外
例外の種類 | 条件 |
---|---|
conflictingItemId が NULL 参照 (Visual Basic では Nothing) です。 です。 |
|
制約の競合または復旧可能なエラーが既にこのオブジェクトに設定されています。 |
例
次の例では、項目ストアに新しい項目を作成できるかどうかを確認します。項目を作成できない場合は、制約の競合が記録されます。このコード例は、SaveChangeWithChangeUnits の実装から抜粋したものです。
Case SaveChangeAction.Create
If True Then
' Create a new item. Report a constraint conflict if one occurs.
Try
Dim constraintReason As ConstraintConflictReason
Dim conflictingItemId As SyncId = Nothing
' Check if the item can be created or if it causes a constraint conflict.
If _ContactStore.CanCreateContact(change, DirectCast(context.ChangeData, String()), constraintReason, conflictingItemId) Then
' No conflict, so create the item.
_ContactStore.CreateContactFromSync(change, DirectCast(context.ChangeData, String()))
Else
' A constraint conflict occurred, so report this to the change applier.
context.RecordConstraintConflictForItem(conflictingItemId, constraintReason)
End If
Catch ex As Exception
' Some other error occurred, so exclude this item for the rest of the session.
Dim errData As New RecoverableErrorData(ex)
context.RecordRecoverableErrorForItem(errData)
End Try
Exit Select
End If
case SaveChangeAction.Create:
{
// Create a new item. Report a constraint conflict if one occurs.
try
{
ConstraintConflictReason constraintReason;
SyncId conflictingItemId;
// Check if the item can be created or if it causes a constraint conflict.
if (_ContactStore.CanCreateContact(change, (string[])context.ChangeData, out constraintReason, out conflictingItemId))
{
// No conflict, so create the item.
_ContactStore.CreateContactFromSync(change, (string[])context.ChangeData);
}
else
{
// A constraint conflict occurred, so report this to the change applier.
context.RecordConstraintConflictForItem(conflictingItemId, constraintReason);
}
}
catch (Exception ex)
{
// Some other error occurred, so exclude this item for the rest of the session.
RecoverableErrorData errData = new RecoverableErrorData(ex);
context.RecordRecoverableErrorForItem(errData);
}
break;
}
参照
リファレンス
SaveChangeContext クラス
SaveChangeContext メンバー
Microsoft.Synchronization 名前空間