質問

違いは何ですか ieditableObjectiRevertibleChangetracking (両方ともSystem.comPonentModel名空間から)?最初のサポートは明示的なトランザクションをサポートし、2番目のトランザクションはより暗黙的であるように見えますが、最終的な結果は同じです。これをコードに実装するにはどうすればよいですか?現時点では、私は何もしません beginedit そして電話してください 拒否AcceptChangesEndeditcanceledit それぞれ。私の問題は、これがbegineditの前に行われた変更を受け入れることです。

それは本当にマイクロソフトが望んでいたことですか、それとも2つの相互に排他的なインターフェイスを実装しようとしていますか?

役に立ちましたか?

解決

2つのインターフェイスは相互に排他的ではありません。彼らです 単に異なるがやや関連するシナリオをサポートすることを意図しています, 、同じ指定されたクラスによって実装される可能性があります。簡単な説明です:

iedableObjectインターフェイス

ieditableObject インターフェイスは、オブジェクトが必要とするシナリオをサポートするように設計されています 編集中に特定の方法で内部状態を管理する.

そのため、インターフェイスには、編集フェーズが開始、完了、または中止されたときに明示的にマークするメソッドが含まれているため、それらの段階でオブジェクトの状態を変更するために適切なアクションをとることができます。


iRevertiblechAngetrackingインターフェイス

iRevertibleChangetracking インターフェイスは、オブジェクトができるようにする必要があるシナリオをサポートするように設計されています 以前の状態へのロールバック.

インターフェイスには、オブジェクトの現在の状態を永続的にする必要がある場合、または最後の既知の永久状態に戻す必要がある場合にマークするメソッドがあります。

他のヒント

ieditableObject ダイアログボックスなどの短期的に使用されます。

iRevertibleChangetracking レコードの編集やレコードを保存する必要があるかどうかを追跡するなど、長期的な回転可能な変更に使用されます。

私はしばしば両方のインターフェイスを実装して、2つのレベルの元に戻すことができるようにします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top