一个典型的EF+MVC系统将有两个或三个级别的验证:
- 针对ViewModel:输入/物理验证(DataAnnotations,FluentValidation),换句话说,长度,空值,范围,正则表达式等。
- 针对Model:输入/物理验证(重复步骤一,如果没有使用MVC并且数据来自另一个系统,WCF,表单等)
- 针对Model:逻辑/“业务规则”验证
- 在实体的属性设置器中放入简单的验证规则(但这真的很混乱)
- 挂钩EF的
SaveChanges()
,如果实体处于Added
或Modified
状态,则触发验证(这将同时验证整个实体)
- 是否有更好的方法或有用的工具(例如,DataAnnotations或FluentValidation,但用于域实体)?
- 模型验证的最佳位置或触发模型验证的最佳位置在哪里?