如何在.net核心或mvc6的entity Framework7中实现软删除?
在实体框架6中很容易实现,但我不知道在DNX中安装哪个包,在实体框架7中实现软删除。
发布于 2016-05-05 03:00:29
您可以覆盖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();
}我的BaseEntity类:
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; }
}https://stackoverflow.com/questions/36216103
复制相似问题