我知道,我知道。为什么有人想这样做?该应用程序已经审核了对数据的更改,但现在企业也希望审核所有读取(没有令人信服的用户故事,我不得不说)。我已经向他们提出了反对的所有论据,但他们坚持认为。
EF / DbContext是否提供了一个扩展点,适用于拦截从数据库返回的所有记录并在审计跟踪中写入条目?还是有另一种明智的做法吗?
答案 0 :(得分:1)
您可以使用ObjectContext.ObjectMaterialized。 MSDN片段:
从数据中的数据创建新实体对象时发生 source作为查询或加载操作的一部分。
在所有标量,复杂和引用之后引发此事件 已在对象上设置属性,但在集合之前 加载。如果对象中存在具有相同键值的对象 上下文,实体框架将不重新创建对象和此 活动不会被提出。
但这只会跟踪通过EF实现从Db读取的项目。