ASP.NET MVC中的DDD,viewmodel和验证

Lef*_*tyX 3 asp.net-mvc domain-driven-design viewmodel

我正在开发我的第一个DDD应用程序并尝试遵循我在过去几个月中研究过的一些基本规则.

我用Nhibernate实现了存储库模式.
我以为我可以将我的实体从控制器"移动"到视图中,但很快我就意识到这几乎是不可能的.

大多数人似乎更喜欢定义特定于每个视图的视图模型.
我并不特别想要重新定义我已经为我的实体创建的字段,但似乎这是唯一的方法.

现在我面临着我想要附加一些验证规则的情况.
我以为我可以将验证规则(使用DataAnnotations)附加到实体,但如果我使用的是viewmodel则无法工作.

以下是问题:

  • 验证不应该是域模型的一部分吗?
  • 创建模型然后花时间重新映射viewmodel上的相同字段(属性)不是很耗时吗?
  • 如果它至少没有验证规则,这不是一个贫血的模型吗?我开始怀疑DDD是否真的适合中小型应用.

我感谢任何帮助/建议.

Dar*_*rov 6

这已被问过数百次了,我已经回答了数百次(所以这让你成为第100位和第一个问这个问题的人:-)):将用户验证逻辑放在你的视图模型上(比如必填字段,日期时间格式等) ,...)并将业务验证逻辑放在您的实体上(例如用户名已被占用,用户无法再在您的网站上购买产品,因为他已达到最大配额,......).

  • 我想我们现在已经成千上万了. (3认同)