ApplyAction 列挙体
同期中に行を適用できない場合の行の処理オプションを指定します。
名前空間: Microsoft.Synchronization.Data
アセンブリ: Microsoft.Synchronization.Data (Microsoft.Synchronization.Data.dll 内)
構文
'宣言
Public Enumeration ApplyAction
'使用
Dim instance As ApplyAction
public enum ApplyAction
public enum class ApplyAction
type ApplyAction
public enum ApplyAction
メンバー
メンバー名 | 説明 | |
---|---|---|
Continue | 処理を続行し、SyncConflict オブジェクトで定義される競合のリストにその行を追加します。これが既定の動作です。 | |
RetryApplyingRow | もう一度その行の適用を試みます。 | |
RetryWithForceWrite | 同期アダプター コマンドに含まれているロジックを使用して、行を強制的に適用します。 | |
RetryNextSync | 行を例外として保存しておき、次回の同期セッションの際にその行の適用を試みます。ピア ツー ピアの同期に対してのみ有効です。 |
説明
同期中に行を適用できない場合は、ApplyChangeFailed イベントが発生します。ApplyChangeFailedEventArgs オブジェクトを使用すると、失敗の原因となったエラーまたは競合に関する情報が提供されます。イベントのハンドラーで、同期プロバイダーが行の適用を再試行するかどうかを指定できます。クライアント側での変更の強制書き込みは、クライアント同期プロバイダーによって処理されます。サーバー側での変更の強制書き込みは、サーバーに変更を適用するコードにそのロジックが必要となります。詳細については、「データの競合とエラーを処理する方法」を参照してください。
例
次のコード例では、クライアントでの更新とサーバーでの削除が競合した場合は、RetryWithForceWrite の値を指定します。完全なコンテキスト例でこのコードを表示するには、「データの競合とエラーを処理する方法」を参照してください。
if (e.Conflict.ConflictType == ConflictType.ClientUpdateServerDelete)
{
//For client-update/server-delete conflicts, we force the client
//change to be applied at the server. The stored procedure specified for
//customerSyncAdapter.UpdateCommand accepts the @sync_force_write parameter
//and includes logic to handle this case.
Console.WriteLine(String.Empty);
Console.WriteLine("***********************************");
Console.WriteLine("A client update / server delete conflict was detected.");
e.Action = ApplyAction.RetryWithForceWrite;
Console.WriteLine("The client change was retried at the server with RetryWithForceWrite.");
Console.WriteLine("***********************************");
Console.WriteLine(String.Empty);
}
If e.Conflict.ConflictType = ConflictType.ClientUpdateServerDelete Then
'For client-update/server-delete conflicts, we force the client
'change to be applied at the server. The stored procedure specified for
'customerSyncAdapter.UpdateCommand accepts the @sync_force_write parameter
'and includes logic to handle this case.
Console.WriteLine(String.Empty)
Console.WriteLine("***********************************")
Console.WriteLine("A client update / server delete conflict was detected.")
e.Action = ApplyAction.RetryWithForceWrite
Console.WriteLine("The client change was retried at the server with RetryWithForceWrite.")
Console.WriteLine("***********************************")
Console.WriteLine(String.Empty)
End If