首页 新闻 会员 周边 捐助

c# model中的List和dictionary类型的属性,怎么在SqlServer中保存

0
悬赏园豆:5 [已解决问题] 解决于 2017-12-11 20:22

我在学.net web窗体程序,遇到c#model类中的属性类型是list或者dictionary,那么,如何根据这两种数据类型在数据表中建立相应列呢,列的类型怎么弄???
 当前我只想到了SqlServer用特殊格式的字符串来存,取的时候再做处理转化成list和dictionary,但这种方式很不爽啊。。

public class UserInfo
    {
        public int UserID { get; set; }
        public int UserSmallHeadPath { get; set; }
        public string UserNickName { get; set; }

        public List<string> UserCollectedNewsID { get; set; }    //用户收藏的所有新闻的ID的集合
    }

如果根据这个类建立一张表,那么这个UserCollectedNewsID怎么处理??

AI大胜的主页 AI大胜 | 初学一级 | 园豆:122
提问于:2017-12-04 14:28
< >
分享
最佳答案
0

这个地方千万不要想简单放在一条记录内,json不行,逗号更不行。

有没想过你如何去更新其中一部分?

有没有考虑过如果用户这里有点量级的数据你读的时候怎么办?

有没有针对大量这种数据的计算的解决方案,比如join出来用户喜好的标题什么的?

收获园豆:5
Daniel Cai | 专家六级 |园豆:10424 | 2017-12-04 15:42
其他回答(3)
0

表UserCollectedNews ,两个字段:UserID , NewsID

西漠以西 | 园豆:1675 (小虾三级) | 2017-12-04 14:54

感谢指导,可是这样搞得话,加入要收藏10个新闻,那表中不就得有十条记录了吗。

我想的是一条记录就能搞定。我还是菜鸟,不知道这能不能实现。

支持(0) 反对(0) AI大胜 | 园豆:122 (初学一级) | 2017-12-04 14:59

@断流: 

要一条记录搞定那也行啊。在UserInfo表中加个NVARCHAR的CollectedNewsID字段,存“12,234,3456,111”

支持(0) 反对(0) 西漠以西 | 园豆:1675 (小虾三级) | 2017-12-04 15:12

@西漠以西: 哈哈,我当初就是这么想的

支持(0) 反对(0) AI大胜 | 园豆:122 (初学一级) | 2017-12-04 15:20
0

一般,这种多个的存储都是拿分隔符拼接进去的。例如 "1,2,3,4,5,6" ;用的时候以逗号拆分成List<string> 使用。如果是对象的话,可以选择存储Json字符串的形式存储。根据后面的注释,我觉得收藏的业务不应该单独提出去存取在一张表里面?

大楚打码人 | 园豆:4313 (老鸟四级) | 2017-12-04 15:13

你让我开了眼界,json这个词,我回去研究研究,谢啦

支持(0) 反对(0) AI大胜 | 园豆:122 (初学一级) | 2017-12-04 15:21

@断流: Json 就是个字符串。

支持(0) 反对(0) 大楚打码人 | 园豆:4313 (老鸟四级) | 2017-12-04 15:21
0

出现这种情况,是因为对基础查询语句的生疏。这个情况我用查询语句中的join解决了,即连接两个表的查询。这还不是主要的问题,重点是表的设计和模型类的设计。数据表的模型类不一定非得和一张表的数据类型完全一致,它的某个属性还可以是另一相关联的一张表的模型类的集合,填充数据时,只要对sql查询语句稍作用心,就基本OK了。

AI大胜 | 园豆:122 (初学一级) | 2017-12-11 20:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册