Я пробовал поставщика Audit.NET Entity Framework без использования наследования, описанного в https://github.com/thepirat000/Audit.NET/tree/master/src/Audit.EntityFramework#without-inheritance
Есть ли способ сначала сохранить операции с БД, а затем создать AuditEvent? Я заметил, что если у вас настроены ограничения БД, событие Audit по-прежнему срабатывает, в то время как DbContext.SaveChangesAsync
создает исключение в основном потоке.
Этот фрагмент выполняет операцию с БД, но не запускает событие Audit:
public override async Task<int> SaveChangesAsync(CancellationToken cancellationToken = default(CancellationToken))
{
try
{
int saveResult = await base.SaveChangesAsync(cancellationToken);
return await _helper.SaveChangesAsync(_auditContext, () => Task.FromResult(saveResult));
}
catch (Exception)
{
throw;
}
}
Но если я заменю две строки на
return await _helper.SaveChangesAsync(_auditContext, () => base.SaveChangesAsync(cancellationToken));
работает нормально, но Аудит происходит перед операцией БД. Что мне здесь не хватает?