1

私は Entity Framework を使用しており、テーブルに行を挿入または更新するときに、追加のアクションを実行したいと考えています。データベースからのストアド プロシージャだけでなく、コード内の実際の関数 - できればイベント ベース。(非同期実行)どちらのシナリオでも、ハンドラーへのメッセージの送信をトリガーするか、他の方法で関数の実行を有効にする必要があります。

1) 作成する

var Row = DbContext.Table.GetById(Id);    
Row.SomeColumn = newValue;
DbContext.SaveChanges();

2) アップデート

var Row = new Row(valOfColumn1, ...);
DbContext.Table.AddObject(Row);
DbContext.SaveChanges();

答える前に:

現在更新と挿入が実行されている場所を見つけることは、前述の追加機能の実行に常に関連する必要がある将来の使用法をカバーしていません。

専用関数を使用してテーブルを常に作成または更新する必要があることを確立することはオプションではありません。なぜなら、人々は追加関数で言及された使用の必要性を認識していないと想定する必要があるからです。

4

1 に答える 1

0

この回答から、次のイベント ハンドラーを追加できますObjectStateManager

var contextAdapter = ((IObjectContextAdapter)dbcontext);            
contextAdapter.ObjectContext
          .ObjectStateManager
          .ObjectStateManagerChanged += ObjectStateManagerChanged;
于 2013-11-05T14:08:08.620 に答える