【发布时间】:2011-02-19 11:49:14
【问题描述】:
在 mvc 应用中采用这个简单、常见的场景:
当用户注册时,用户名必须是唯一的。
现在我已经阅读了很多关于项目结构、域驱动设计、验证、mvc 等的内容,并且我对我的逻辑层感到满意:域(模型、核心)、域服务、控制器和视图。我可以确保例如通过向我的属性添加验证属性,用户名少于 10 个字符。故障将通过服务层冒泡返回到控制器并返回到视图中。
但是对于这个简单的场景,我坚持调用堆栈的最佳解决方案 - 并且已经很好地测试过,因为这个验证需要调用 db 来检查所有其他用户名。
对我来说,这仍然是 User 模型的验证问题。我真的很希望能够创建一个自定义验证属性,以便在设置此属性时检查持久性以确保唯一性。
哇!直接调用数据库的域对象??我不确定这是一件坏事。我可以让城堡将 IRespositories 注入到域中,对,所以没有紧密耦合,毕竟它是定义数据接口的域。
有人对此有任何经验/意见吗?
【问题讨论】:
标签: model-view-controller validation domain-driven-design