2011-07-07 18 views
3

エンティティに含まれる監査情報を実際に削除する前に更新するにはどうすればよいですか?私はDbContextから派生したクラスに取り組んでいます。削除前のエンティティを更新する

状態をModifiedに変更してから、更新された情報を設定してからbase.SaveChanges()を呼び出し、Deletedとしてマークしました。更新された情報を設定した後にSaveChangesを呼び出そうとすると問題が発生します。リレーションの他のオブジェクトが削除済みとマークされ、この例外が発生したようです。

"A relationship from the 'ChildrenEntity' AssociationSet is in the 'Deleted' state. Given multiplicity constraints, a corresponding 'ParentEntity' must also in the 'Deleted' state." 

ありがとう!

答えて

2

はいこれは問題があり、おそらくデータベースで削除トリガーを使用するより良い方法を見つけることができません。あなたは、アプリケーションでそれを処理する場合の作業の方法は次のようになります。context.ObjectStateManager.GetObjectStateEntires

  • 反復のすべてのレコードと、いくつかの一時的なデータ構造に各エントリの実際の状態を保存します。
  • 最初に変更するエントリを除き、すべてのエントリを変更されていない状態に設定します。初めて
  • コールSaveChanges
  • 反復すべての状態エントリを再度、それらを設定TransactionScope

    に一時的なデータ構造を再び

あなたは全体の動作を行う必要があります

  • コールSaveChangesに保存された状態
  • 関連する問題