解决项目需求变化:如何应对数据表中字段的增加

问题的引入(假设):
在一个项目中,我们有一个这样的用户信息表,里面有关的联系信息只存有:用户电话与用户地址。
现在老板发现,仅仅提供这两种方式有点落伍啦,他要求我们得多弄几个联系方式,把QQ啊Email啊,MSN什么的都弄上去。
好啦,需求发生的变他,老板一句话,我们就只得重新打开我们的程序,得把这几个开上去。
可能有的人很快就想到啦,简单啦,多来几个字段,一个存一个,然后一口气花了几个钟头,总算弄完啦,以为万事大吉的时候,老板又来啦,他说,“哎呀,刚才忘记说啦,,手机没补上,你的重新弄下。”狂晕。

问题出来啦,那我们有没有比这个好一点的办法(多一个联系方式加一个字段)呢。
最近我就遇到了同样的问题,我就针对这个问题提供了一下我的解决方案(当然我的需求比这个例子更复杂)。

方案如下:
1.我只添加一个字段,别的字段保持不变(减少代码的改动);
2.我新加一个实体类,声名几个属性各要添加的联系方法一一对应。
例如:
public class userInfoAdd{
public string QQ{get;set;}
public string Email{get;set;}
public string MSN{get;set}
public string phone{get;set;}
}
3,我的想法是把这个实体类的属性赋值后存到数据库,等要用的时候从数据库里取出来。这样就达到了我的目的。
问题是怎样实现这个想法呢?总不能直接把实例存到数据库吧(MS说他现在还不支持
那我们就想别的办法。序列化可以满足我们的需求(我们把序列后后的结果存到数据库,当要用的时候从数据库里面取出来,进行反序列化,就得到了我们的实例,有了这个实体,想干什么都方便(嗯,感觉不错))。
好,那就开始序列化,又有个小问题,我们究竟序列化成哪个格式,XML,二进制,还是JSON。
综合一下,我学得用JSON很好,它比XML小(这样我们的数据库就可以省的空间)又比二进制可读性好(二进制根本就没有可读性)。它有格式好像是这样的{QQ:260717774,Email:leleroyn@gmail.com,MSN:leleroyn@gmail.com},一看就知道存的是什么信息,可读性非常好!

问题就这样解决了,回味一下:
1.适用场合:字段有增加,而且不只一个(这些字段不能进行反查询,在本例子中就是不能通过QQ查用户别的信息) 。大家好像都在讨论这个问题,都怪我没说清楚,不好意思! //于2008-6-24 0:15 修改此部分
2.用一个实体类承载我们的信息
3.把承载信息后的实体序列化后存到数据据那个新加的字段
4.要用的时候,从数据库里取出这个字段,然后反序列化为一个实例(这个实体带信息的)

文章就写到这,欢迎

原文地址:https://www.cnblogs.com/leleroyn/p/1228209.html