我试图创建一个网站使用asp.net核心,实体框架和MySQL。但我被困在一个点。**存储列表变量在SQL列。**我有一个数据库模型,必须存储列表在它。我读过关于存储列表在SQL中的问题,但大多数回答是说不要这样做。我很好奇我可以序列化我的列表到JSON和存储在一列?喜欢;
new List<string>(){"data1", "data2"}
到
"["data1", "data2"]"
这样做有缺点吗?或者有其他的解决办法吗?我愿意接受所有的建议。
brccelvz1#
是的,你可以在MySQL中存储JSON。MySQL从5.7版本开始就有一个JSON type,但是他们至少在8.0.17版本之前有很多功能,而且JSON的新修复程序仍在引入中。你问了缺点。是的,有很多缺点。
您应该阅读一些过去的questions I've answered about MySQL in JSON,了解一些人在尝试使用JSON时所引起的麻烦类型-如果他们使用普通的行和列,它会是如此简单。从我所看到的人们滥用JSON的方式来看,我倾向于说,这是添加到任何关系数据库中的最不明智的特性。
你可能也喜欢我的演示文稿How to Use JSON in MySQL Wrong。在存储简单数组的示例中,如果在相关表中每行存储一个值,则对于存储效率、查询复杂性和优化而言会更好。这是在关系数据库中存储多值属性的正确方法。使用JSON就像任何其他形式的反规范化一样。它 * 可能 * 是一个优点,但仅限于特定的查询。它对所有其他查询都是不利的。
pxq42qpu2#
是,您可以序列化为JSON字符串
JSON
Newtonsoft.Json.JsonConvert.SerializeObject(list);
并反串行化
list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(jsonArray);
2条答案
按热度按时间brccelvz1#
是的,你可以在MySQL中存储JSON。MySQL从5.7版本开始就有一个JSON type,但是他们至少在8.0.17版本之前有很多功能,而且JSON的新修复程序仍在引入中。
你问了缺点。是的,有很多缺点。
您应该阅读一些过去的questions I've answered about MySQL in JSON,了解一些人在尝试使用JSON时所引起的麻烦类型-如果他们使用普通的行和列,它会是如此简单。从我所看到的人们滥用JSON的方式来看,我倾向于说,这是添加到任何关系数据库中的最不明智的特性。
你可能也喜欢我的演示文稿How to Use JSON in MySQL Wrong。
在存储简单数组的示例中,如果在相关表中每行存储一个值,则对于存储效率、查询复杂性和优化而言会更好。这是在关系数据库中存储多值属性的正确方法。
使用JSON就像任何其他形式的反规范化一样。它 * 可能 * 是一个优点,但仅限于特定的查询。它对所有其他查询都是不利的。
pxq42qpu2#
是,您可以序列化为
JSON
字符串并反串行化