CSLA验证规则总结
CSLA业务规则
验证规则所在空间: Csla.Rules
基类 BusinessBase 的属性 BusinessRules 中记录了业务类的验证规则
验证规格的写法
private class MyRule : Csla.Rules.BusinessRule
{
protected override void Execute(RuleContext context)
{
var target = (Customer)context.Target;
if (target.Sales < 10)
context.AddInformationResult("Customer has
low sales");
}
}
添加验证规则
protected override void AddBusinessRules()
{
base.AddBusinessRules();
BusinessRules.AddRule(new MyRule { PrimaryProperty = SalesProperty
});
}
多数规则都需要设置一个主要属性(PrimaryProperty),在构造函数中中为其赋值,比如下面的 Required,MaxLength 规则
protected override void
AddBusinessRules()
{
base.AddBusinessRules();
BusinessRules.AddRule(new
MyRule { PrimaryProperty = SalesProperty });
BusinessRules.AddRule(new
Csla.Rules.CommonRules.Required(NameProperty));
BusinessRules.AddRule(new
Csla.Rules.CommonRules.MaxLength(NameProperty, 20));
}
引发验证规则
BusinessRules.AddRule(new MyRule { PrimaryProperty =
SalesProperty });
在之前的AddRule() 调用中,PrimaryProperty 属性被设置为 SalesProperty,
把验证规格 和 特定的属性关联在一起,一旦属性(SalesProperty)变动,验证规则就会被自动触发。
如果没有提供 为验证规则提供PrimaryProperty,业务规则是和业务类进行关联的。
基类 BusinessBase 的属性 BusinessRules 中有三个方法来检查验证规格
1 、CheckRules()
– 检查对象中的所有验证规则。
2、CheckObjectRules() - 仅校验不和属性关联的验证规则。
3、CheckRules(property)
– 检查某个属性的所有规则。
框架中的实现
var rulesProperty
=
typeof(BusinessBase).GetProperty("BusinessRules",BindingFlags.DeclaredOnly
| BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic);
if (rulesProperty != null)
{
var rules = rulesProperty.GetValue(this.Basic, null) as
Csla.Rules.BusinessRules;
if (rules != null)
{
rules.CheckRules();
}
}
else
{
messageService.ShowError("rulesProperty == null");
}
提示实效规则列表
实效列表 BrokenRulesCollection
if (this.Basic.BrokenRulesCollection.Count > 0)
{
string temp = string.Empty;
foreach (var item in this.Basic.BrokenRulesCollection)
{
temp +=
item.Description + "\r\n";
}
messageService.ShowError(temp);
return result;
}
CSLA验证规则总结的更多相关文章
- Yii1.1的验证规则
在Yii1.1的数据验证是由CValidator完成,在CValidator中提供了各种基本的验证规则 <?php public static $builtInValidators=array( ...
- ThinkPhp5.0模型验证规则
Tp5提供了模型数据规则的验证功能,用于在数据save或者update前验证数据的有效性.Tp5提供校验规则的类为\Think\Validate,默认提供的校验规则可以查看该文件. 在Model文件中 ...
- EF里如何定制实体的验证规则和实现IObjectWithState接口进行验证以及多个实体的同时验证
之前的Code First系列文章已经演示了如何使用Fluent API和Data Annotation的方式配置实体的属性,比如配置Destination类的Name属性长度不大于50等.本文介绍E ...
- TP5验证规则
系统内置的验证规则如下: 格式验证类 require 验证某个字段必须,例如:'name'=>'require' number 或者 integer 验证某个字段的值是否为数字(采用filter ...
- [Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则
目录 概述 在模型中添加验证规则 自定义验证规则 伙伴类的使用 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5 ...
- Thinkphp 1.验证规则 2.静态定义 3.动态验证
一.验证规则 数据验证可以对表单中的字段进行非法的验证操作.一般提供了两种验证方式: 静态定 义($_validate 属性)和动态验证(validate()方法). //验证规则 array( ar ...
- oracle ebs应用产品安全性-交叉验证规则
转自: http://blog.itpub.net/298600/viewspace-625138/ 定义: Oracle键弹性域可以根据自定义键弹性域时所定义的规则,执行段值组合的自动交叉验证.使用 ...
- Struts2 验证框架 validation.xml 常用的验证规则
validation.xml 的命名规则和放置路径: 文件名:<ActionClassName>-validation.xml <ActionClassName>就是要验证的A ...
- 爱上MVC3~为下拉列表框添加一个自定义验证规则
回到目录 开发它的原因: 之前的同事,也是我的哥们,问我下拉列表框是否可以支持验证,这个问题看似简单,但确实MVC里有为我们提供,所以,只能自己写个扩展了,即自己写一个attribute特性,让它继承 ...
随机推荐
- wcf 开发 1
1.创建wcf应用程序 2.生成服务,启动 3.使用工具生成 文件如下: 4.新增加winform程序项目,并添加文件 service1.cs 修改app.config 5.代码调用 private ...
- Python高级教程-返回函数
函数作为返回值 高阶函数除了可以接收函数作为参数外,还可以把函数作为结果值返回. 要实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = 0 ...
- 002-es6字符串扩展
1.字符串扩展 参考地址:http://es6.ruanyifeng.com/#docs/string 1.1.codePointAt() JavaScript 内部,字符以 UTF-16 的格式储存 ...
- 关于c#继承
如下代码所示:最后输出的是:8,3,7,4 public class A { public virtual void One(int i) { Console.Write(i); } public v ...
- Jenkins+maven+Tomcat+SVN一键自动打包部署应用到服务器
今天请教了大神,终于把jenkins给搞明白了 现在做下笔记,防止自己老年痴呆又忘了怎么配置 (截图可能不够清晰,有不清楚的随时评论打call) 机器配置: 安装配置规划 机器 192.168.169 ...
- 使用 10046 查看执行计划并读懂 trace 文件
查看 sql 执行计划的方法有许多种, 10046 事件就是其中的一种. 与其他查看 sql 执行计划不同, 当我们遇到比较复杂的 sql 语句, 我们可以通过 10046 跟踪 sql 得到执行计划 ...
- 阿里、腾讯、京东、微软,各家算法&数据挖掘岗位面经大起底!
阿里.腾讯.京东.微软,各家算法&数据挖掘岗位面经大起底! 2016-02-24 36大数据 36大数据 作者: 江少华 摘要: 从2015年8月到2015年10月,花了3个月时间找工作,先后 ...
- Codeforces Round #305 (Div. 2)
C. Mike and Frog 题意:有一只青蛙和一朵花,分别高度为h1.h2,每浇一次水,h1=(x1*h1+y1)mod m,h2=(x2*h2+y2)mod m.求最少浇多少次后h1=a1,h ...
- VK Cup 2018 - Round 1+Codeforces Round #470
A. Primal Sport 题意:有两个人轮流玩游戏.给出数X(i-1),轮到的人需要找到一个小于X(i-1)的素数x,然后得到Xi,Xi是x的倍数中大于等于X(i-1)的最小的数.现在已知X2, ...
- pycharm修改配置
恢复pycharm的初始设置