SaveChanges işlevini geçersiz kılabilirsiniz.
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();
}
Benim BaseEntity Sınıfı:
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; }
}