首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架7软删除

实体框架7软删除
EN

Stack Overflow用户
提问于 2016-03-25 15:54:12
回答 1查看 1K关注 0票数 2

如何在.net核心或mvc6的entity Framework7中实现软删除?

在实体框架6中很容易实现,但我不知道在DNX中安装哪个包,在实体框架7中实现软删除。

EN

回答 1

Stack Overflow用户

发布于 2016-05-05 03:00:29

您可以覆盖SaveChanges函数。

代码语言:javascript
复制
    public override int SaveChanges()
    {
        var objectStateEntries = ChangeTracker.Entries()
      .Where(e => e.Entity is BaseEntity && e.State != EntityState.Detached && e.State != EntityState.Unchanged).ToList();
        var currentTime = DateTime.UtcNow;
        foreach (var entry in objectStateEntries)
        {
            var entityBase = entry.Entity as BaseEntity;
            if (entityBase == null) continue;
            switch (entry.State)
            {
                case EntityState.Deleted:
                    {
                        entry.State = EntityState.Modified;
                        entityBase.DeletedTime = currentTime;
                        entityBase.IsDeleted = true;
                        break;
                    }
                case EntityState.Modified:
                    entityBase.UpdatedTime = currentTime;
                    break;
                case EntityState.Added:
                    entityBase.CreatedTime = currentTime;
                    break;
                default:
                    break;
            }
        }
        return base.SaveChanges();
    }

我的BaseEntity类:

代码语言:javascript
复制
public class BaseEntity
{
    public Guid Id { get; set; }
    public DateTime CreatedTime { get; set; }
    public DateTime? UpdatedTime { get; set; }
    public DateTime? DeletedTime { get; set; }

    public bool IsDeleted { get; set; }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36216103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档