Entity framework 实体框架7软删除

Entity framework 实体框架7软删除,entity-framework,asp.net-core-mvc,.net-core,Entity Framework,Asp.net Core Mvc,.net Core,如何在.net core或mvc6的entity framework 7中实现软删除 在entity framework 6中易于实现,但我不知道哪个软件包安装在DNX中,并在entity framework 7中实现软删除。您可以覆盖SaveChanges功能 public override int SaveChanges() { var objectStateEntries = ChangeTracker.Entries() .Where(e =&

如何在.net core或mvc6的entity framework 7中实现软删除


在entity framework 6中易于实现,但我不知道哪个软件包安装在DNX中,并在entity framework 7中实现软删除。

您可以覆盖SaveChanges功能

    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();
    }
我的基本实体类:

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; }
}

在上下文中加载导航属性会发生什么情况?