在Forums中,有些内容是不固定的,例如用户资料,除了一些基本资料,可能还要有一些其他资料信息,例如MSN、个人主页、签名档等,一般对于这样的都是每一个属性对应于数据库中的一个字段。但是如果以后我们因为需要增加一些属性,例如QQ号、Blog地址等,如果还是用这种增加数据表字段的方法,那么将会频繁的修改数据库表结构、存储过程、数据库访问的程序。
或许您也遇到过类似问题,看Forums中是怎么借用.Net的序列化和反序列化来解决的:例如我需要在用户资料里面增加QQ号这个属性,那么我只需要在User类中增加一个属性public String QQIM { get { return GetExtendedAttribute("QQIM"); } set { SetExtendedAttribute("QQIM", value); }}不需要修改数据库表结构,不需要修改存储过程,连数据库访问的程序都不需要动。
其具体实现的主要代码:
实质上序列化机制是将类的值转化为一个一般的(即连续的)字节流,然后就可以将该流保存到数据库的某个字段中(在数据库中forums_UserProfile表中有一个字段“StringNameValues varbinary(7500)”)。读取的过程对对象进行反序列化时,创建出与原对象完全相同的副本。
注意一般这类属性在数据库中是不能被检索到的,并且要这些属性能被序列化。
posted on 2006-11-07 14:27 风雨兼程 阅读(271) 评论(0) 编辑 收藏 所属分类: Asp.net 2.0
Powered by: BlogJava Copyright © 风雨兼程