public void AddLogItem(LogItem log) { // since we are using EF to add to the log we need ot avoid // logging EF related things, otherwise every time we log we generate more log events // continuously // might be better to use the normal mssql ado log repository instead // need to decouple logging repos from core repos if (log.Logger.Contains("EntityFrameworkCore")) { return; } var logItem = LogItem.FromLogItem(log); dbContext.Add(logItem); dbContext.SaveChanges(); // learned by experience for this situation we need to create transient instance of the dbcontext // for logging because the dbContext we have passed in is scoped to the request // and it causes problems to save changes on the context multiple times during a request // since we may log mutliple log items in a given request we need to create the dbcontext as needed // we can still use the normal dbContext for querying //dbContext.Add(logItem); //dbContext.SaveChanges(); //return logItem.Id; }