鉴于我对MVC和DDD的理解(必要时批评):
也就是说,向域模型添加数据验证可以消除任何类型的冗余。
那么如何让ViewModel继承域模型数据验证呢?
我不希望简单地从视图模型引用域模型。
答案 0 :(得分:2)
我在模式和问题上问了同样的问题。去年10月与Brad Wilson对话进行实践峰会,他没有全球解决方案。
我与他讨论的一个想法是扩展一个对象映射库,例如AutoMapper,以便将验证从域模型映射到视图模型。
在设计框架以促进这种情况时,需要考虑以下事项:
验证规则可能取决于上下文,因此可能对特定视图模型是唯一的。企业库验证块允许使用配置文件设置验证逻辑 - 例如,可以扩展为传输到视图模型。
视图模型可能具有不属于域模型的属性,例如指定已选中某个“同意条件”复选框的属性。此属性需要验证,但它特定于视图和用例,而不是域模型。此方案充当另一个参数,以使验证逻辑至少部分保持独立。
出于维护和清晰的目的,可能更容易为域模型和视图模型复制某些验证逻辑,而不是使用映射框架。