コード例 #1
0
        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);
                    }
                }
            }));
        }
コード例 #2
0
        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);
        }