Пример #1
0
        public void Delete(PrimaryKeysRange keysRange)
        {
            var filter = Builders <BsonDocument> .Filter.Gte("_id", keysRange.From) &
                         Builders <BsonDocument> .Filter.Lte("_id", keysRange.To);

            _collection.DeleteMany(filter);
        }
Пример #2
0
        public void Delete(PrimaryKeysRange keysRange)
        {
            var deleteQuery = $@"DELETE FROM {_dbName}.{_tableName} WHERE {_columns[0].Name} >= @from AND {_columns[0].Name} <= @to;";

            using (var connection = (MySqlConnection)_connection.Clone())
            {
                connection.Open();
                var cmd = new MySqlCommand(deleteQuery, connection);
                cmd.Parameters.Add("@from", MySqlDbType.Int32).Value = keysRange.From;
                cmd.Parameters.Add("@to", MySqlDbType.Int32).Value   = keysRange.To;
                cmd.ExecuteNonQuery();
            }
        }
Пример #3
0
        public DataSet Select(PrimaryKeysRange keysRange)
        {
            var filter = Builders <BsonDocument> .Filter.Gte("_id", keysRange.From) &
                         Builders <BsonDocument> .Filter.Lte("_id", keysRange.To);

            var docs   = _collection.FindSync(filter).ToEnumerable();
            var result = new DataSet(_columns);

            foreach (var doc in docs)
            {
                var values = new object[doc.ElementCount];

                for (int i = 0; i < _columns.Length; i++)
                {
                    var    column = _columns[i];
                    object value;

                    switch (column.Type)
                    {
                    case DataType.Number:
                        value = doc.GetValue(column.Name).AsInt32;
                        break;

                    case DataType.String:
                        value = doc.GetValue(column.Name).AsString;
                        break;

                    case DataType.Boolean:
                        value = doc.GetValue(column.Name).AsBoolean;
                        break;

                    case DataType.Date:
                        value = doc.GetValue(column.Name).AsBsonDateTime.ToUniversalTime();
                        break;

                    default:
                        value = null;
                        break;
                    }

                    values[i] = value;
                }
                result.AddRow(values);
            }

            return(result);
        }
Пример #4
0
        public DataSet Select(PrimaryKeysRange keysRange)
        {
            using (var connection = OpenConnection())
            {
                var query = $"SELECT * FROM {_dbName}.{_tableName} WHERE _id >= @from AND _id <= @to";
                var cmd   = new MySqlCommand(query, connection);
                cmd.Parameters.Add("@from", MySqlDbType.Int32).Value = keysRange.From;
                cmd.Parameters.Add("@to", MySqlDbType.Int32).Value   = keysRange.To;

                var dataSet = new DataSet(_columns);
                var reader  = cmd.ExecuteReader();
                while (reader.Read())
                {
                    var values = new object[_columns.Length];
                    for (int i = 0; i < _columns.Length; i++)
                    {
                        var    column = _columns[i];
                        object value  = null;
                        switch (column.Type)
                        {
                        case DataType.Number:
                            value = reader.GetInt32(column.Name);
                            break;

                        case DataType.String:
                            value = reader.GetString(column.Name);
                            break;

                        case DataType.Date:
                            value = reader.GetDateTime(column.Name);
                            break;

                        case DataType.Boolean:
                            value = reader.GetBoolean(column.Name);
                            break;
                        }

                        values[i] = value;
                    }

                    dataSet.AddRow(values);
                }

                return(dataSet);
            }
        }
Пример #5
0
        public void Update(PrimaryKeysRange keysRange, DataRow row)
        {
            var updateQuery = $@"UPDATE {_dbName}.{_tableName} ";

            updateQuery +=
                $"SET {string.Join(",", row.Columns.Skip(1).Select((column, i) => $"{column.Name} = {ToMySqlValue(row.Values[i+1], column)}"))} ";
            updateQuery += $"WHERE {_columns[0].Name} >= @from AND {_columns[0].Name} <= @to;";

            using (var connection = (MySqlConnection)_connection.Clone())
            {
                connection.Open();
                var cmd = new MySqlCommand(updateQuery, connection);
                cmd.Parameters.Add("@from", MySqlDbType.Int32).Value = keysRange.From;
                cmd.Parameters.Add("@to", MySqlDbType.Int32).Value   = keysRange.To;
                cmd.ExecuteNonQuery();
            }
        }
Пример #6
0
        public void Update(PrimaryKeysRange keysRange, DataRow row)
        {
            var filter = Builders <BsonDocument> .Filter.Gte("_id", keysRange.From) &
                         Builders <BsonDocument> .Filter.Lte("_id", keysRange.To);

            var updates = new UpdateDefinition <BsonDocument> [row.Columns.Length - 1];

            for (int i = 0, j = 0; i < row.Columns.Length; i++)
            {
                var column = row.Columns[i];
                if (column.Name != "_id")
                {
                    updates[j++] = Builders <BsonDocument> .Update.Set(column.Name, row.Values[i]);
                }
            }

            _collection.UpdateMany(filter, Builders <BsonDocument> .Update.Combine(updates));
        }
Пример #7
0
 public void Delete(PrimaryKeysRange keysRange)
 {
     Thread.Sleep(_rand.Next(1, _timeout));
 }
Пример #8
0
 public void Update(PrimaryKeysRange keysRange, DataRow row)
 {
     Thread.Sleep(_rand.Next(1, _timeout));
 }
Пример #9
0
 public DataSet Select(PrimaryKeysRange keysRange)
 {
     Thread.Sleep(_rand.Next(1, _timeout));
     return(new DataSet(new DataColumn[0]));
 }
Пример #10
0
 public void Delete(PrimaryKeysRange keysRange)
 {
     throw new NotImplementedException();
 }
Пример #11
0
 public void Update(PrimaryKeysRange keysRange, DataRow row)
 {
     throw new NotImplementedException();
 }
Пример #12
0
 public DataSet Select(PrimaryKeysRange keysRange)
 {
     Thread.Sleep(1);
     return(new DataSet(new DataColumn[0]));
 }