示例#1
0
        public async Task <int> ExecuteAsync(Dictionary <string, object> commands)
        {
            await using var conn = new MySqlConnection(_connectionString);
            await conn.OpenAsync();

            await using var transaction = await conn.BeginTransactionAsync();

            try
            {
                using var batch   = conn.CreateBatch();
                batch.Transaction = transaction;
                foreach (var(key, value) in commands)
                {
                    var command = new MySqlBatchCommand(key);
                    command.SetParameters(value);
                    batch.BatchCommands.Add(command);
                }
                var result = await batch.ExecuteNonQueryAsync();

                await transaction.CommitAsync();

                return(result);
            }
            catch (Exception)
            {
                await transaction.RollbackAsync();

                return(0);
            }
        }
示例#2
0
        public static void SetParameters(this MySqlBatchCommand cmd, object parameter)
        {
            if (parameter == null)
            {
                return;
            }

            var paramType = parameter.GetType();

            foreach (var item in paramType.GetProperties())
            {
                var itemValue = item.GetValue(parameter);
                if (itemValue == null)
                {
                    continue;
                }
                cmd.Parameters.AddWithValue(item.Name, item.GetValue(parameter));
            }
        }