Silverlight4 と Ria Service を使用しています:
3 つのレコード ( 1 、 2 、 3 ) を持つテーブル (「MyTable」と呼ばれる) があるとします。アプリケーションのどこかに次のコードを記述しました。
CurrentItem = 1;
MyContext.MyTables.Delete(CurrentItem);
CurrentItem = 2;
MyContext.MyTables.Delete(CurrentItem);
何らかの理由で、「保存」ボタンを押す前に、最初の削除済みアイテムを拒否したい(1)が、2番目のアイテムを削除したい(2)。これは、使用できないことを意味します:
MyContext.RejectChanges()
すべての変更(削除したい削除済みアイテムを含む)を拒否するため、IRevertibleChangeTrackingを使用すると問題を解決できます。次のようなもの:
((IRevertibleChangeTracking) MyItem).RejectChanges();
しかし、このインターフェイスを使用する前に、削除されたアイテムにアクセスする必要があります。最初は MyContext.MyTables 経由で取得しようとしましたが、削除されたレコードが含まれていないため、EntityChangeSet で取得しようとしました。
EntityChangeSet Changes = MyContext.EntityContainer.GetChanges();
MyTable DeletedItem = Changes.First<MyTables>( e => e.ID = 1 ) ;
そして、私は IRevertibleChangeTracking を使用しました:
((IRevertibleChangeTracking) DeletedItem ).RejectChanges();
しかし、実行後、このコード行はレコードの状態を変更せず、「削除済み」のままだったので、「保存」ボタンを押すと、データベースから物理的に削除されました!!!! IRevertibleChangeTracking は、削除/追加されたアイテムに対しては機能しないようです (変更されたアイテムに対してのみ機能します)。
したがって、DomainContext から特定の削除済みアイテムを拒否する方法はありますか。
ありがとう、