飞扬的Blog
主页
登录
EF Core实现软删除
"date"
:
"2020-09-10 13:34:37"
"classfiy"
:
"ef core"
"author"
:
"飞扬"
"viewTimes"
:
228
返回
> 在Context文件内重写SaveChanges和Async版本 ```CSharp public async override Task<int> SaveChangesAsync(CancellationToken cancellationToken = default) { ChangeTracker.DetectChanges(); //找到有ISoftDelete特性并且是删除的Entities foreach (var entry in ChangeTracker.Entries<ISoftDelete>().Where(e => e.State == EntityState.Deleted)) { //修改状态为Modified entry.State = EntityState.Modified; //软删除 entry.Entity.IsDeleted = true; entry.Entity.DeletionTime = DateTime.Now; } return await base.SaveChangesAsync(cancellationToken); } ``` ```CSharp public interface ISoftDelete { bool IsDeleted { get; set; } DateTime? DeletionTime { get; set; } } ```