0

我正在为我的 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;
    }
4

1 回答 1

1

在这两个地方进行验证是没有意义的。在验证器中进行所有验证就足够了。

于 2013-09-05T08:50:27.727 回答