1

I am deleting entities with hard delete by marking EntityState.Deleted; I have also enabled CDC in the DB tables.

How can I capture deletedby from the application through entity framework?

I have tried to set deletedby value. But then the entity state is in 'deleted' state, the updated value is not reflecting in the table. Please don't suggest to update 'deletedby' column value first and then perform real delete.

Praveen Prasannan
  • 7,093
  • 10
  • 50
  • 70
  • See [This](https://dba.stackexchange.com/questions/34079/change-data-capture-how-to-know-who-made-the-change) question that was asked on the SQL Server site. – Bradley Uffner Aug 16 '18 at 10:06

1 Answers1

0

Seems like you want an audit trail, using EF.

I would suggest executing the desired functionality on your saveChanges method.

If you are using context.SaveChanges(), i would suggest overriding it.

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
   }
}
Immorality
  • 2,164
  • 2
  • 12
  • 24