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);
}
}