public static async Task <int> SaveAsync(this BitcornContext dbContext, IsolationLevel isolationLevel = IsolationLevel.RepeatableRead) { if (!DB_WRITES_ENABLED) { return(0); } //create execution strategy so the request can retry if it fails to connect to the database var strategy = dbContext.Database.CreateExecutionStrategy(); return(await strategy.ExecuteAsync(async() => { using (var transaction = dbContext.Database.BeginTransaction(isolationLevel)) { try { int count = await dbContext.SaveChangesAsync(); transaction?.Commit(); return count; } catch (Exception e) { transaction?.Rollback(); Log.Logger.Error(e.Message, e); throw new Exception(e.Message, e.InnerException); } } })); }
public static async Task <ErrorLogs> LogError(BitcornContext dbContext, Exception e, string code = null) { var logEntry = new ErrorLogs(); logEntry.Message = e.Message; logEntry.Application = "BITCORNService"; logEntry.Code = code; logEntry.StackTrace = e.StackTrace; logEntry.Timestamp = DateTime.Now; dbContext.ErrorLogs.Add(logEntry); await dbContext.SaveChangesAsync(); return(logEntry); }