当前位置: 代码迷 >> .NET分析设计 >> ,程序设计模式,对多个字段进行不同的校验有好的方法实现
  详细解决方案

,程序设计模式,对多个字段进行不同的校验有好的方法实现

热度:355   发布时间:2016-05-01 22:31:11.0
求助,程序设计模式,对多个字段进行不同的校验有好的方法实现
例如,
数据来源1:
字段:A,B,C,D
校验:比如:A不为空,C必须为数字...,每个字段校验
数据来源2:
字段:E,F,G,H
校验:同上
数据来源N:
字段:...
校验:同上
数据来源数在10-20间,每个来源的字段数1-50之间,
针对每个字段都要进行校验,而且每个字段的校验规则不一定相同,比如校验:不为空,必须为数据自,必须为8位字符...
所有校验规则大约80-100种。

针对这种实现方式,大家帮看看有没有好点的管理校验规则,实现校验的方式。

程序实现,或者数据库中实现都可以
------解决思路----------------------
对于实体模型,那么使用 property set 来校验就行了。

在实体上设置attribute等形式,通常是因为有一个“分层”的模型,例如表现层模块的开发环境跟业务逻辑层是不同的,例如javascript运行在页面端,而业务逻辑层运行在服务器端,于是可能为服务器端输出 html 时所自动产生的 jaavscript 代码设置一些规则,并且在实体模型上定义。这样当进行客户都按验证代码修改时,就不需要修改表现层的代码。

而对于重要的前端表现层,则既有可能不惜代价去重写,也可能稍微花点代价去接收灵活的“规则设置”而动态执行。

在我们的软件设计原则中,尽可能避免任何存储过程或者触发器。可能是因为我们的目标是高性能高并发系统的原因。

对于小OA,你手动写几百个触发器也可以,只不过将来维护起来实在是很容易乱得无法理清,而且你可以想象一下在高并发地修改数据库时那些触发器会让原本就很低效的数据库更加慢许多倍。将来你开发的服务器系统会将许多逻辑处理放到内存中、缓存中,而肯定不是把程序的压力人性滴压到数据库系统的。但是对于设计小OA程序的人,也可以没有这方面的要求。
------解决思路----------------------
https://github.com/JeremySkinner/FluentValidation,可以直接用,或者参考它自己实现。
  相关解决方案