共用方式為


ConstraintConflictResolutionAction 列舉型別

表示解決特定條件約束衝突所採取的動作。

命名空間:  Microsoft.Synchronization
組件:  Microsoft.Synchronization (在 Microsoft.Synchronization.dll 中)

語法

'宣告
Public Enumeration ConstraintConflictResolutionAction
'用途
Dim instance As ConstraintConflictResolutionAction
public enum ConstraintConflictResolutionAction
public enum class ConstraintConflictResolutionAction
type ConstraintConflictResolutionAction
public enum ConstraintConflictResolutionAction

成員

成員名稱 描述
SkipChange 忽略衝突,而且不套用變更。變更套用者不會將衝突資料傳遞至目的地提供者。
DestinationWins 目的地複寫上所做的變更永遠優先。變更套用者會將來源變更傳遞至 SaveItemChange 方法,並指定 DeleteAndStoreTombstone 的儲存動作。目的地提供者會建立來源變更的標記。當目的地當做日後同步處理的來源使用時,它會列舉代表來源項目刪除的變更,因此將其從同步處理社群中移除。
SourceWins 來源複寫上所做的變更永遠優先。變更套用者會將變更傳遞至 SaveItemChange 方法,並指定 DeleteConflictingAndSaveSourceItem 的儲存動作。來源變更會套用至目的地複寫,而且會從目的地複寫中刪除衝突的目的地項目。
SaveConflict 記錄衝突,而且不套用變更。變更套用者會將衝突資料傳遞至 SaveConstraintConflict 方法,將衝突儲存在衝突記錄檔中。如需記錄衝突的詳細資訊,請參閱記錄及管理衝突
Merge 來源項目的資料會與目的地項目結合。變更套用者會將來源複寫的變更資料傳遞至 SaveItemChange 方法,並指定 ChangeIdUpdateVersionAndMergeData 的儲存動作。如需詳細資訊,請參閱偵測及解決條件約束衝突的<合併衝突的項目>一節。
RenameSource 從來源提供者所傳送的變更會重新命名,讓它不再與目的地複寫的衝突項目發生衝突,而且來源變更會套用至目的地複寫。變更套用者會將變更傳遞至 SaveItemChange 方法,並指定 RenameSourceAndUpdateVersionAndData 的儲存動作。
RenameDestination 目的地複寫的衝突項目會重新命名,讓它不再與從來源提供者所傳送的變更發生衝突,而且來源變更會套用至目的地複寫。變更套用者會將變更傳遞至 SaveItemChange 方法,並指定 RenameDestinationAndUpdateVersionData 的儲存動作。

備註

ConstraintConflictResolutionAction 的成員會指定變更套用者解決條件約束衝突所採取的動作。條件約束衝突是違反在項目或變更單位上所設條件約束 (例如資料夾的關聯性或檔案系統之中名稱完全相同之資料的位置) 的衝突。指定衝突解決原則時,變更套用者會在衝突條件約束衝突發生時,指定條件約束衝突解決動作。否則,當系統通知發生條件約束衝突時,同步處理應用程式會指定條件約束衝突解決動作。

如需條件約束衝突的詳細資訊,請參閱偵測及解決條件約束衝突

範例

下列範例會實作 ItemConstraint 事件的處理常式。此處理常式會向使用者顯示衝突項目,並且根據使用者的回應設定條件約束衝突解決動作。

Private Sub HandleItemConstraint(ByVal sender As [Object], ByVal args As ItemConstraintEventArgs)
    If ConstraintConflictReason.Collision = args.ConstraintConflictReason Then
        ' Display the two items that are in conflict and solicit a resolution from the user.
        Dim srcContact As New Contact(DirectCast(args.SourceChangeData, String()))
        Dim destContact As New Contact(DirectCast(args.DestinationChangeData, String()))
        Dim msg As String = ("Source change is " & srcContact.ToString() & vbLf & "Destination change is ") & destContact.ToString() & vbLf & "Click Yes to rename the source change and apply it." & vbLf & "Click No to rename the destination item and apply the source change." & vbLf & "Click Cancel to delete the destination item and apply the source change."
        Dim ccDlg As New ConstraintConflictDlg(msg)
        ccDlg.ShowDialog()

        ' Set the resolution action based on the user's response.
        args.SetResolutionAction(ccDlg.Resolution)
    Else
        args.SetResolutionAction(ConstraintConflictResolutionAction.SaveConflict)
    End If
End Sub
void HandleItemConstraint(Object sender, ItemConstraintEventArgs args)
{
    if (ConstraintConflictReason.Collision == args.ConstraintConflictReason)
    {
        // Display the two items that are in conflict and solicit a resolution from the user.
        Contact srcContact = new Contact((string[])args.SourceChangeData);
        Contact destContact = new Contact((string[])args.DestinationChangeData);
        string msg = "Source change is " + srcContact.ToString() +
                   "\nDestination change is " + destContact.ToString() +
                   "\nClick Yes to rename the source change and apply it." +
                   "\nClick No to rename the destination item and apply the source change." +
                   "\nClick Cancel to delete the destination item and apply the source change.";
        ConstraintConflictDlg ccDlg = new ConstraintConflictDlg(msg);
        ccDlg.ShowDialog();

        // Set the resolution action based on the user's response.
        args.SetResolutionAction(ccDlg.Resolution);
    }
    else 
    {
        args.SetResolutionAction(ConstraintConflictResolutionAction.SaveConflict);
    }
}

請參閱

參考

Microsoft.Synchronization 命名空間