【发布时间】:2015-07-24 21:53:23
【问题描述】:
我正在探索 Entity Framework 7,我想知道是否有办法拦截“SELECT”查询。每次创建、更新或删除实体时,我都会在实体上标记当前日期和时间。
SELECT *
FROM MyTable
WHERE DeletedOn IS NOT NULL
我希望我的所有 SELECT 查询都排除已删除的数据(请参阅上面的 WHERE 子句)。有没有办法使用 Entity Framework 7 来做到这一点?
【问题讨论】:
-
我会改用软删除,即位字段
Deleted。如果设置为 true,则更新日期时间将显示发生这种情况的时间。有关复杂但完整的解决方案,请参阅 github.com/rowanmiller/Demo-TechEd2014。 -
该示例似乎适用于 EF6,而不是 EF7。
-
当然他们还没有在 EF 7 中实现命令拦截器。我开始讨厌这个半生不熟的版本,即使它仍然是一个预发布版本。不过,我认为最好遵循标准的软删除方法,但我还不知道如何拦截 EF7 命令。
-
您提供的 where 子句只会导致任何数据被删除,除非我读错了?您的意思是使用 Is Null 吗?
标签: entity-framework entity-framework-core