如何附加在创建/更新或检测到表中的更改时执行的其他操作?

我正在使用Entity Framework,当我在表中插入或更新Row时,我想执行其他操作。 不仅是来自数据库的存储过程而且是代码中的实际function – 优选基于事件。 (异步执行)两种方案都应该触发向处理程序发送一些消息或以其他方式启用函数的执行。

1)创造

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

2)更新

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

在你回答之前

在执行当前更新和插入时查找位置不包括将来应该始终与执行所述额外function相关联的用法。

建立一个应该总是使用专用函数创建或更新表不是一个选项,因为我需要假设人们不会意识到使用提到额外function的必要性。

从这个答案 ,您可以向ObjectStateManager添加一个事件处理程序:

 var contextAdapter = ((IObjectContextAdapter)dbcontext); contextAdapter.ObjectContext .ObjectStateManager .ObjectStateManagerChanged += ObjectStateManagerChanged;