Я использую FluentValidation
и Service Layer
для моего приложения MVC.Правильное место для проверки кода в сервисе?
У меня есть вопрос относительно того, где вы бы поставили логику, чтобы проверить наличие дубликатов.
Скажем, у вас есть CategoryService
и CategoryValidator
, вы бы поставить логику для проверки дубликата название категории на службе или в валидатор, используя Must
предикат?
В любом из приведенных ниже способов я выполняю общие действия, такие как проверка правильного имени категории в валидаторе.
Метод 1
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;
});
}
Метод 2
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;
}