2016-03-25 6 views
2

net KernEntity Framework 7 Soft-Delete

, wie ich kann weich in Entity Framework 7 in .net Kern oder mvc6

in Entity Framework 6 in leicht implementieren löschen ment emple aber ich weiß nicht, wich Paket installieren in DNX und implementieren Soft-Löschen in Entity Framework 7

Bitte helfen Sie mir tanx.

Antwort

1

Sie können die SaveChanges-Funktion überschreiben.

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

Meine BaseEntity Klasse:

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