public ValueDataContract AddOrUpdateValue(ValueDataContract value)
        {
            ValueDataContract result;

            if (value.Id < 1)
            {
                var valueModel = new Value();
                valueModel.Populate(value);
                valueModel = _context.Values.Add(valueModel);
                _context.SaveChanges();

                result = valueModel.Convert();
            }
            else
            {
                var valueModel = _context.Values.Single(item => item.Id == value.Id);
                valueModel.Populate(value);
                _context.SaveChanges();

                result = valueModel.Convert();
            }
            
            return result;
        }
        public async Task<ValueDataContract> AddOrUpdateValueAsync(ValueDataContract value)
        {
            ValueDataContract result;

            if (value.Id < 1)
            {
                var valueModel = new Value();
                valueModel.Populate(value);
                valueModel = _context.Values.Add(valueModel);
                await _context.SaveChangesAsync();

                result = valueModel.Convert();
            }
            else
            {
                var valueModel = await _context.Values.SingleAsync(item => item.Id == value.Id);
                valueModel.Populate(value);
                await _context.SaveChangesAsync();

                result = valueModel.Convert();
            }

            return result;
        }