我在学.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怎么处理??
这个地方千万不要想简单放在一条记录内,json不行,逗号更不行。
有没想过你如何去更新其中一部分?
有没有考虑过如果用户这里有点量级的数据你读的时候怎么办?
有没有针对大量这种数据的计算的解决方案,比如join出来用户喜好的标题什么的?
表UserCollectedNews ,两个字段:UserID , NewsID
感谢指导,可是这样搞得话,加入要收藏10个新闻,那表中不就得有十条记录了吗。
我想的是一条记录就能搞定。我还是菜鸟,不知道这能不能实现。
@断流:
要一条记录搞定那也行啊。在UserInfo表中加个NVARCHAR的CollectedNewsID字段,存“12,234,3456,111”
@西漠以西: 哈哈,我当初就是这么想的
一般,这种多个的存储都是拿分隔符拼接进去的。例如 "1,2,3,4,5,6" ;用的时候以逗号拆分成List<string> 使用。如果是对象的话,可以选择存储Json字符串的形式存储。根据后面的注释,我觉得收藏的业务不应该单独提出去存取在一张表里面?
你让我开了眼界,json这个词,我回去研究研究,谢啦
@断流: Json 就是个字符串。
出现这种情况,是因为对基础查询语句的生疏。这个情况我用查询语句中的join解决了,即连接两个表的查询。这还不是主要的问题,重点是表的设计和模型类的设计。数据表的模型类不一定非得和一张表的数据类型完全一致,它的某个属性还可以是另一相关联的一张表的模型类的集合,填充数据时,只要对sql查询语句稍作用心,就基本OK了。