我正在使用Entity Framework,当我在表中插入或更新Row时,我想执行其他操作。 不仅是来自数据库的存储过程而且是代码中的实际功能 - 最好是基于事件的。 (异步执行)两种情况都应该触发向处理程序发送一些消息或以其他方式启用函数的执行。
1)创建
var Row = DbContext.Table.GetById(Id);
Row.SomeColumn = newValue;
DbContext.SaveChanges();
2)更新
var Row = new Row(valOfColumn1, ...);
DbContext.Table.AddObject(Row);
DbContext.SaveChanges();
在您回答之前:
在执行当前更新和插入时查找位置不包括将来应该与执行所述额外功能相关联的用法。
建立一个应该总是使用专用函数创建或更新Table不是一个选项,因为我需要假设人们不会意识到使用提到额外功能的必要性。
答案 0 :(得分:0)
从this answer,您可以向ObjectStateManager
添加事件处理程序:
var contextAdapter = ((IObjectContextAdapter)dbcontext);
contextAdapter.ObjectContext
.ObjectStateManager
.ObjectStateManagerChanged += ObjectStateManagerChanged;