捕获在EF硬删除中删除了谁

时间:2018-08-16 07:37:28

标签: c# sql-server entity-framework hard-delete

我通过标记EntityState.Deleted;来删除具有硬删除功能的实体 我还在数据库表中启用了CDC。

如何通过实体框架捕获从应用程序删除的内容?

我尝试设置Deletedby值。但是,然后实体状态处于“已删除”状态,更新后的值未反映在表中。请不要建议先更新“ deletedby”列值,然后再执行实际删除。

1 个答案:

答案 0 :(得分:0)

似乎您想使用EF进行审核。

我建议您在saveChanges方法上执行所需的功能。

如果您正在使用context.SaveChanges(),我建议将其覆盖。

public class YourContext
{
   public override int SaveChanges()
   {
      AuditDeletedEntries();
      base.SaveChanges();
   }

   private void AuditDeletedEntries()
   {

            ChangeTracker.Entries<yourclassType>().Where(x => x.State == EntityState.Deleted).ToList().Select(x => x.Entity) as List<yourclassType>;

      // write changes to your database
   }
}