自定义字段的解决方案
有关自定义字段的解决方案,希望大家踊跃讨论!
问题提出:
有时我们在某个project中可能会遇到这种情况,就是有一个User表,但由于User表中的某些字段可能在设计时并未考虑到,由于扩展的需要,在系统release后必须加入某些字段,这种情况我们
往往不会去修改原有的系统,而是在设计时就预留了一个自定义字段的功能。以下是我对该问题的解决思路,可能还存在一些问题,权当抛砖引玉。
基本思想就是将列转化为列,增加一个表CustomField(PkId,FieldName,FieldDataType,FieldDefaultValues,ControlType);
UserCustomField(PkId,UserPkId,CustomFieldPkId,FieldValue)
如果这样设计,可能会遇到的问题:
1.在新增user页面,需要动态加入自定义字段所对应的控件到指定的位置,并且布局须与原页面一致
2.编辑时需动态载入自定义字段对应的控件,并赋予其初始值
可能还会有些其他问题,希望大家指出问题,并提出最终的解决方案,也好让之后碰到类似问题的人能有章可循。
问题点数:100、回复次数:12Top
1 楼gmfirefox(荒诞居士)回复于 2005-05-29 22:58:30 得分 0
其中UserCustomField是User和CustomField之间的一个关系表Top
2 楼gmfirefox(荒诞居士)回复于 2005-05-29 23:00:45 得分 0
写错,是将列转化为行Top
3 楼gmfirefox(荒诞居士)回复于 2005-05-30 09:08:32 得分 0
没人进,再顶Top
4 楼zhongwanli(㊣【为了老婆,二次重构____然后升★★】㊣)回复于 2005-05-30 09:13:12 得分 10
这种东西,想法是好,又想过。
回增加系统的负载。Top
5 楼gmfirefox(荒诞居士)回复于 2005-05-30 11:01:34 得分 0
不得已,用用激将法。
难道CSDN没有高手了吗?Top
6 楼gmfirefox(荒诞居士)回复于 2005-05-30 12:14:03 得分 0
加分了,讨论激烈的话,继续加分Top
7 楼gmfirefox(荒诞居士)回复于 2005-05-30 21:29:48 得分 0
感觉用简单工厂模式模式,根据不同的需求来生成不同的实例应该可以搞定Top
8 楼mba9001(两年不见,csdn变肥了)回复于 2005-05-30 22:19:59 得分 10
upTop
9 楼allanli(若尘)回复于 2005-05-30 23:38:35 得分 40
在ADO.NET下,你跟本就可以动态生成更新表语句,所以你就完全可以用一个类去编辑一个动态的表(字段名称与字段数量完全不固定)
在.NET FrameWork下,你完全可以动态生成任何组件(甚至动态编译代码),所以你可以根据你的后台配置动态布局你的用户界面.
我现在正在使用的一个类,你可以任意指定一个具有主键的表给他,他就可以对该表进行任意的添加修改删除操作,各个字段的编辑组件可以任意指定(类型和位置大小等)
Top
10 楼gmfirefox(荒诞居士)回复于 2005-05-31 10:26:46 得分 0
因为采用的是NHibernate框架,所以动态更改表基本上不可能。因为那样不仅要更改表,还要更改配置文件及其关系等。并且还要考虑多国语言的配置,所以我是觉得应该提出一个更好的解决方案,感谢若尘的回答!Top
11 楼allanli(若尘)回复于 2005-05-31 11:20:28 得分 0
功能需求才是决定你采用什么技术的关键,既然NHibernate框架达不到你的需求,那么你还用他干嘛!
我现在的设计完全基于.NET自带组件,可以达到应对多变的需求而不用修改源代码,基本就是修改配置就可以了.Top
12 楼longgui(龙不归)回复于 2005-05-31 11:29:37 得分 40
就这样可以了,数据类型就定义为三类就可以了,不然很麻烦 的!
字符、数值和枚举三种,可以加长度和精度控制Top




