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