我正在为我的 MVC 应用程序使用FluentValidation
和。Service Layer
我有一个关于您将逻辑放在哪里来检查重复项目的问题。
假设您有 aCategoryService
和 a ,您会使用谓词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;
}