【发布时间】:2019-02-25 13:29:50
【问题描述】:
我刚刚向 MyClass SQL 表添加了 IsValidRecord 列。 它将用作逻辑删除/软删除。 现在我需要更新我的应用程序以仅根据新列查询有效记录。
我首先使用Entity Frameword DB。 我们的应用程序使用一个业务层来集中所有获取 MyClass 项目的方法。 所以我已经更新了所有使用基于 IsValid 的适当过滤器查询相关表的方法。 它工作正常。
但是,我很确定这些都是不好的做法,因为开发人员会忘记为将来添加的新方法设置此过滤器,这显然会带来不正确的记录。
我想知道 EF 是否具有使用适当的“AND IsValid = 1”过滤器自动过滤查询的功能?
我曾经在一家公司工作,与 NHibernate 做同样的事情。
我看到的 EF 唯一受支持的功能是: Soft Delete 不幸的是,它覆盖了 OnModelCreating,所以我认为它只适用于 Code First 架构。 我们首先使用 DataBase,所以我认为它不起作用,因为永远不会调用 OnModelCreating?
【问题讨论】:
-
也许这会有所帮助:meziantou.net/2017/07/10/…(尽管这也使用了
OnModelCreating) -
此链接适用于 Entity Framework Core。我的应用程序使用 EF,我无法升级到 EF Core。是的,据我所知,OnModelCreating 不在 DB First 架构中执行。
-
为什么不继续做您目前正在做的事情,直到您从现有数据库或 EF Core 迁移到 Code First?
标签: sql .net entity-framework soft-delete