【发布时间】:2013-09-05 03:58:42
【问题描述】:
我在 MVC 应用程序中使用 FluentValidation 和 Service Layer。
我有一个问题,您将把逻辑放在哪里来检查重复项。
假设您有一个CategoryService 和一个CategoryValidator,您是否会使用Must 谓词在服务或验证器中检查重复类别名称的逻辑?
在下面的任何一种方法中,我都会做一些常见的事情,比如在验证器中检查一个有效的类别名称。
方法一
public bool AddCategory(Category category)
{
var validationResult = validationService.Validate(category);
if (!validationResult.IsValid)
return false;
categoryRepository.Add(category);
return true;
}
public CategoryValidator(ICategoryService service)
{
RuleFor(x => x.Name)
.NotEmpty()
.Must((category, name) =>
{
return service.GetCategories().SingleOrDefault(x => x.Name == name) == null;
});
}
方法二
public bool AddCategory(Category category)
{
var existing = categoryRepository.Query().SingleOrDefault(x => x.Name == category.Name);
if (existing != null)
return false;
categoryRepository.Add(category);
return true;
}
【问题讨论】:
标签: validation fluentvalidation service-layer