Fluent Validation,领域和视图模型

4
我一直在使用asp.net mvc、nhibernate和ddd概念开发Web应用程序。
我已经使用Fluent Validation为我的领域类开发了验证,它的效果很好。现在,我需要一个ViewModel来编辑视图中的实体,所以我的问题是,“我需要创建另一个验证类来验证我的ViewModel吗?还是应该怎么做来解决这个问题?”
我问这个问题是因为我不想破坏DRY(不要重复自己)的概念。
谢谢!
1个回答

6

在我看来,域级别验证和视图-模型验证是非常不同的(尽管它们可能有很多重叠)。

例如,在数据库中将某个字段设为null可能是完全允许的,但要求在某些Web表单中输入。在这种情况下,您将在Model验证中检查是否为null。

多个客户端应用程序共享相同的域控制器(例如通过WCF),但具有不同的应用程序验证逻辑也是很正常的。

如果您在视图模型中使用DataAnnotations,您可以免费获得客户端JavaScript验证。因此,作为一般规则,即使是1:1映射,我总是拥有与我的领域对象分离的ViewModel - 我只使用AutoMapper在它们之间进行翻译。除了获得客户端验证外,这还减少了领域验证中的混乱。


2
好的,我将为我的视图模型开发一些验证。Fluent Validation 与 asp.net mvc 集成得非常好(它覆盖了数据注释)。有一些验证会对数据库造成一些影响(使用我的存储库的自定义验证)。这些验证应该在领域模型或视图模型中进行,还是两者都要进行?如果两者都要进行,那么我的验证是否需要对数据库进行2次访问来进行相同的验证呢?干杯!(我也会使用 AutoMapper) - Felipe Oriani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接