Я хочу записать запрос EF (или транзакцию) обратно в базу данных, чтобы я мог контролировать производительность в живой системе. Примечание. Я знаю, что в моем UOW может появиться несколько запросов. Это нормально, я просто хочу сказать, какие области системы замедляются и т. Д.Запрашивать время запроса EF в базе данных
Каков наилучший способ для этого? Моя первоначальная мысль заключалась в том, чтобы сделать это в UnitOfWork.Dispose()
, чтобы каждый запрос автоматически регистрировался после завершения. Но это немного пахнет, потому что мне нужно будет позвонить Save()
, чтобы сохранить информацию, но что, если вызывающий абонент не захочет сохранять?
Есть ли другой способ, я могу автоматически регистрировать время запроса в базе данных?
protected virtual void Dispose(bool disposing)
{
if (this.logQueryToDatabase)
{
var timeTaken = DateTime.UtcNow - this.start;
LogPerformance(this.callingFnName, timeTaken.TotalMilliseconds);
}
this.ctx.Dispose();
}