SaveChangeContext.RecordConstraintConflictForItem 메서드 (SyncId, ConstraintConflictReason)
대상 공급자가 변경 내용을 대상 복제본에 적용하려고 했을 때 제약 조건 충돌이 발생했음을 보고하고 충돌하는 대상 항목의 항목 ID를 지정합니다.
네임스페이스: Microsoft.Synchronization
어셈블리: microsoft.synchronization.dll의 Microsoft.Synchronization
구문
‘선언
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 네임스페이스