Пример #1
0
        public async Task <World[]> LoadMultipleUpdatesRows(int count)
        {
            IDictionary <string, object> parameters = new ExpandoObject();

            using (var db = _dbProviderFactory.CreateConnection())
            {
                db.ConnectionString = _connectionString;
                await db.OpenAsync();

                var results = new World[count];
                for (int i = 0; i < count; i++)
                {
                    results[i] = await ReadSingleRow(db);
                }

                for (int i = 0; i < count; i++)
                {
                    var randomNumber = _random.Next(1, 10001);
                    parameters[$"@Random_{i}"] = randomNumber;
                    parameters[$"@Id_{i}"]     = results[i].Id;

                    results[i].RandomNumber = randomNumber;
                }

                await db.ExecuteAsync(BatchUpdateString.Query(count), parameters);

                return(results);
            }
        }
Пример #2
0
        public async Task <World[]> LoadMultipleUpdatesRows(int count)
        {
            using (var db = _dbProviderFactory.CreateConnection())
            {
                db.ConnectionString = _connectionString;
                await db.OpenAsync();

                using (var updateCmd = db.CreateCommand())
                    using (var queryCmd = CreateReadCommand(db))
                    {
                        var results = new World[count];
                        for (int i = 0; i < count; i++)
                        {
                            results[i] = await ReadSingleRow(db, queryCmd);

                            queryCmd.Parameters["@Id"].Value = _random.Next(1, 10001);
                        }

                        updateCmd.CommandText = BatchUpdateString.Query(count);

                        for (int i = 0; i < count; i++)
                        {
                            var id = updateCmd.CreateParameter();
                            id.ParameterName = $"@Id_{i}";
                            id.DbType        = DbType.Int32;
                            updateCmd.Parameters.Add(id);

                            var random = updateCmd.CreateParameter();
                            random.ParameterName = $"@Random_{i}";
                            random.DbType        = DbType.Int32;
                            updateCmd.Parameters.Add(random);

                            var randomNumber = _random.Next(1, 10001);
                            id.Value                = results[i].Id;
                            random.Value            = randomNumber;
                            results[i].RandomNumber = randomNumber;
                        }

                        await updateCmd.ExecuteNonQueryAsync();

                        return(results);
                    }
            }
        }
Пример #3
0
        public async Task <World[]> LoadMultipleUpdatesRows(int count)
        {
            var random  = new ConcurrentRandom();
            var results = new World[count];

            using (var db = new NpgsqlConnection(_connectionString))
            {
                await db.OpenAsync();

                var(queryCmd, queryParameter) = CreateReadCommand(db, random);

                using (queryCmd)
                {
                    for (int i = 0; i < results.Length; i++)
                    {
                        results[i] = await ReadSingleRow(queryCmd);

                        queryParameter.TypedValue = random.Next(1, 10001);
                    }
                }

                using (var updateCmd = new NpgsqlCommand(BatchUpdateString.Query(count), db))
                {
                    var ids     = BatchUpdateString.Ids;
                    var randoms = BatchUpdateString.Randoms;

                    for (int i = 0; i < results.Length; i++)
                    {
                        var randomNumber = random.Next(1, 10001);

                        updateCmd.Parameters.Add(new NpgsqlParameter <int>(parameterName: ids[i], value: results[i].id));
                        updateCmd.Parameters.Add(new NpgsqlParameter <int>(parameterName: randoms[i], value: randomNumber));

                        results[i].randomNumber = randomNumber;
                    }

                    await updateCmd.ExecuteNonQueryAsync();
                }
            }

            return(results);
        }