Пример #1
0
        private void WriteImportantBusinessDataToDatabase(string message, TransactionDetails transactionDetails)
        {
            // This will be committed when "select @@trancount" is 0.
            using (var connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["InconsistencyDemo"].ConnectionString))
            {
                connection.Open();
                var query = @"INSERT INTO [dbo].[ImportantBusinessData] ([Message], [CorrelationId]) VALUES (@message, @correlationId)";

                using (var command = new SqlCommand(query, connection))
                {
                    command.Parameters.AddWithValue("@message", $"{message}. Transaction details: {transactionDetails}");
                    command.Parameters.AddWithValue("@correlationId", correlationId);
                    command.ExecuteNonQuery();
                }
            }
        }
Пример #2
0
        private void WriteLogToDatabase(TransactionDetails transactionDetails)
        {
            // Making sure we always commit this one.
            using (new TransactionScope(TransactionScopeOption.Suppress))
            {
                using (var connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["InconsistencyDemo"].ConnectionString))
                {
                    connection.Open();
                    var query = @"INSERT INTO [dbo].[LogData] ([TranCount], [Xact] , [TranId], [CorrelationId]) VALUES (@trancount, @xact, @tranid, @correlationId)";

                    using (var command = new SqlCommand(query, connection))
                    {
                        command.Parameters.AddWithValue("@trancount", transactionDetails.TranCount);
                        command.Parameters.AddWithValue("@xact", transactionDetails.XactState);
                        command.Parameters.AddWithValue("@tranid", transactionDetails.TranId);
                        command.Parameters.AddWithValue("@correlationId", correlationId);
                        command.ExecuteNonQuery();
                    }
                }
            }
        }