Entity framework 实体框架7软删除
如何在.net core或mvc6的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 =&
在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; }
}
在上下文中加载导航属性会发生什么情况?