在数据库中存储/检索JSON字符串,使其易于在代码中使用

布莱克·里维尔(Blake Rivell)

我有一个具有以下属性的ac#对象“ Product”:偏移量
在数据库中,该字段的类型为nvarchar(50)

我将在其中存储JSON值,例如:{“ y”:0,“ m”:0,“ d”:0}

我想知道一种在我的代码中使用像这样的属性的好方法。这是我目前的操作方式:

public class Product 
{
    public int Id {get; set;}
    public string Description {get; set;}
    public decimal Price {get; set;}

    public int OffsetYears { get; set; }
    public int OffsetMonths { get; set; }
    public int OffsetDays { get; set; }

    public string Offset
    {
        get
        {
            Offset offset = new Offset()
            {
                Y = OffsetYears,
                M = OffsetMonths,
                D = OffsetDays
            };

            return JsonConvert.SerializeObject(offset);
        }
        set
        {
            OffsetObj offset = JsonConvert.DeserializeObject<Offset>(value);

            OffsetYears = offset.Y;
            OffsetMonths = offset.M;
            OffsetDays = offset.D;
        }
    }

    private class OffsetObj
    {
        public int Y { get; set; }
        public int M { get; set; }
        public int D { get; set; }
    }   
}

因此,当我在UI中接受来自用户的值时,我将设置OffsetYears,OffsetMonths和OffsetDays属性。

从数据库中检索值时,我将仅在代码中使用OffsetYears,OffsetMonths和OffsetDays属性。

有没有更好的方法来处理这种事情?我只是觉得我没有利用我所有的c#资源。就像如果其他开发人员在假定可以输入任何格式的字符串的情况下意外地通过代码设置Offset一样,该怎么办。

或者我最好只是在数据库中创建3个单独的整数字段并避免所有这些...

伦坎

我会将这些值保存在您的私有类型的字段中。考虑这种方法:

public class Product
{
    private OffsetObj _offset = new OffsetObj();

    public int Id { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; }

    public int OffsetYears
    {
        get { return _offset.Y; }
        set { _offset.Y = value; }
    }

    public int OffsetMonths
    {
        get { return _offset.M; }
        set { _offset.M = value; }
    }

    public int OffsetDays
    {
        get { return _offset.D; }
        set { _offset.D = value; }
    }

    public string Offset
    {
        get
        {
            return JsonConvert.SerializeObject(_offset);
        }
        set
        {
            _offset = JsonConvert.DeserializeObject<OffsetObj>(value);
        }
    }

    private class OffsetObj
    {
        public int Y { get; set; }
        public int M { get; set; }
        public int D { get; set; }
    }
}

这样,字段偏移量将保存偏移量的值。

就像如果其他开发人员在假定可以输入任何格式的字符串的情况下意外地通过代码设置Offset一样,该怎么办。

如果尝试将Offset属性设置为与JSON格式不匹配的字符串,则JsonConvert将抛出JsonReaderException我认为这是预期的。为了进一步说明,您可以将属性命名为OffsetJson

但是,在这种简单的情况下,我无法看到将您的信息存储为JSON的好处。如果使用关系数据库,则最好将值存储在单独的列中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在数据库中存储字符串数组

来自分类Dev

内插存储在数据库中的字符串

来自分类Dev

如何在Orm查询中使用Laravel在数据库中存储表情符号字符串

来自分类Dev

在ColdFusion中解析以字符串形式存储在数据库中的HTML

来自分类Dev

如何从 Firebase 数据库中检索数据并将其存储为字符串?

来自分类Dev

使用php将整个json字符串存储在mysql数据库中

来自分类Dev

使用php将整个json字符串存储在mysql数据库中

来自分类Dev

加密的字符串未正确存储在数据库中

来自分类Dev

如何将字符串转换为可以存储在数据库中的日期?

来自分类Dev

存储在数据库中的字符串的编码问题

来自分类Dev

比较输入字符串并存储在数据库中(如果相等)

来自分类Dev

如何减少存储在数据库中的XML字符串的长度?

来自分类Dev

在数据库中以字符串格式存储队列条目是否安全

来自分类Dev

尝试从数据库中的字符串检索数据

来自分类Dev

尝试从数据库中的字符串检索数据

来自分类Dev

Java-将字节数组作为字符串存储在数据库中,并使用字符串值创建字节数组

来自分类Dev

检索代码中的默认数据库连接字符串

来自分类Dev

使随机字符串不在数据库中

来自分类Dev

Rails字符串不允许在创建时在数据库中使用空字符串值

来自分类Dev

如何在数据库中采用BigDecimal值并使其易于阅读

来自分类Dev

在数据库行中操作/编辑json编码的字符串值

来自分类Dev

在数据库中读取/写入 POJO 作为 JSON 字符串

来自分类Dev

如何在数据库表中搜索字符串并在laravel中检索匹配的列名

来自分类Dev

当我传递json_encoded数组的Json_decode值并存储在数据库中时,gettype返回字符串

来自分类Dev

Laravel:如何使用雄辩的方式在数据库中搜索给定的字符串?

来自分类Dev

如何使用字符串参数在数据库中搜索

来自分类Dev

如何使用字符串参数在数据库中搜索

来自分类Dev

如何使用查询字符串在数据库中查找文档

来自分类Dev

如何使用 Laravel 在数据库列中查找不规则字符串

Related 相关文章

  1. 1

    在数据库中存储字符串数组

  2. 2

    内插存储在数据库中的字符串

  3. 3

    如何在Orm查询中使用Laravel在数据库中存储表情符号字符串

  4. 4

    在ColdFusion中解析以字符串形式存储在数据库中的HTML

  5. 5

    如何从 Firebase 数据库中检索数据并将其存储为字符串?

  6. 6

    使用php将整个json字符串存储在mysql数据库中

  7. 7

    使用php将整个json字符串存储在mysql数据库中

  8. 8

    加密的字符串未正确存储在数据库中

  9. 9

    如何将字符串转换为可以存储在数据库中的日期?

  10. 10

    存储在数据库中的字符串的编码问题

  11. 11

    比较输入字符串并存储在数据库中(如果相等)

  12. 12

    如何减少存储在数据库中的XML字符串的长度?

  13. 13

    在数据库中以字符串格式存储队列条目是否安全

  14. 14

    尝试从数据库中的字符串检索数据

  15. 15

    尝试从数据库中的字符串检索数据

  16. 16

    Java-将字节数组作为字符串存储在数据库中,并使用字符串值创建字节数组

  17. 17

    检索代码中的默认数据库连接字符串

  18. 18

    使随机字符串不在数据库中

  19. 19

    Rails字符串不允许在创建时在数据库中使用空字符串值

  20. 20

    如何在数据库中采用BigDecimal值并使其易于阅读

  21. 21

    在数据库行中操作/编辑json编码的字符串值

  22. 22

    在数据库中读取/写入 POJO 作为 JSON 字符串

  23. 23

    如何在数据库表中搜索字符串并在laravel中检索匹配的列名

  24. 24

    当我传递json_encoded数组的Json_decode值并存储在数据库中时,gettype返回字符串

  25. 25

    Laravel:如何使用雄辩的方式在数据库中搜索给定的字符串?

  26. 26

    如何使用字符串参数在数据库中搜索

  27. 27

    如何使用字符串参数在数据库中搜索

  28. 28

    如何使用查询字符串在数据库中查找文档

  29. 29

    如何使用 Laravel 在数据库列中查找不规则字符串

热门标签

归档