前言
在 SQL Server – Soft Delete 中, 讲到了如果在 SQL Server 实现 Soft Delete.
这篇来说说, EF Core 在中间扮演的角色.
主要参考
Entity Framework Core: Soft Delete using Query Filters
Soft delete and unique constraint
Using Unique Database Fields with Soft Deletes
Global Filter
通过 Global Filter 可以帮助我们写一堆的 where DateDeleted != null 的语句.
EF 很聪明的哦, Include 也会加上这些语句的. 根本就是为了 soft delete 而实现的功能嘛.
Intercept SaveChanges
通过 Intercept SaveChanges, 判断 entity entry state = delete, 然后转成 update deleted = true 也是一个不错的手法.
Custom Migrations
实现 Soft Delete 需要许多的 trigger 帮忙, 这时就需要 custom migrations 来帮助管理 trigger 的代码了.