我正在使用FluentValidation来验证我的服务操作.我的代码看起来像:
using FluentValidation;
IUserService
{
void Add(User user);
}
UserService : IUserService
{
public void Add(User user)
{
new UserValidator().ValidateAndThrow(user);
userRepository.Save(user);
}
}
Run Code Online (Sandbox Code Playgroud)
UserValidator实现FluentValidation.AbstractValidator.
DDD表示域层必须与技术无关.
我正在做的是使用验证框架而不是自定义异常.
将验证框架放在域层中是一个坏主意吗?
c# architecture domain-driven-design repository fluentvalidation
数据验证应在Web应用程序的以下位置进行:
我目前是DDD粉丝,所以我在我的应用程序中分离了UI和Domain层.
我也试图遵循这个规则,域模型永远不应该包含无效数据.
那么,如何在应用程序中设计验证机制,以便在域中发生的验证错误正确传播到客户端?例如,当域模型引发有关重复用户名的异常时,如何将该异常正确绑定到提交的表单?
一些启发了这个问题的文章可以在这里找到:http://verraes.net/2015/02/form-command-model-validation/
我在Web框架中看不到这样的机制.首先想到的是让域模型包含字段的名称,导致异常,在异常数据中,然后在UI层中提供表单数据字段和模型数据字段之间的映射,以在其上下文中正确显示错误对于用户.这种方法有效吗?它看起来很不稳定......有一些更好的设计的例子吗?