EF 6 DbContext Override AsyncSaveChanges
У меня есть проект веб-API, который использует Entity Framework 6.
Внутри моего файла DbContext я обычно перезаписываю метод SaveChanges, чтобы выполнить процедуру Audit Log, например:
public override int SaveChanges() {
throw new InvalidOperationException("User ID must be provided");
}
public int SaveChanges(int userId, Guid sessionUid) {
// Get all Added/Deleted/Modified entities (not Unmodified or Detached)
foreach(var ent in this.ChangeTracker.Entries().Where(p = > p.State == System.Data.EntityState.Added || p.State == System.Data.EntityState.Deleted || p.State == System.Data.EntityState.Modified)) {
// For each changed record, get the audit record entries and add them
foreach(AuditLog x in GetAuditRecordsForChange(ent, userId, sessionUid)) {
this.AuditLogs.Add(x);
}
}
// Call the original SaveChanges(), which will save both the changes made and the audit records
return base.SaveChanges();
}
Теперь я хотел бы использовать функцию Async в Entity Framework 6, поэтому мне нужно переопределить метод SaveChangesAsync, но не могу найти ни одного примера того, как это сделать.
Кто-нибудь знает, как переопределить метод SaveChangesAsync.?