【问题标题】:Proper place for validation code in a service?服务中验证码的正确位置?
【发布时间】:2013-09-05 03:58:42
【问题描述】:

我在 MVC 应用程序中使用 FluentValidationService 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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-26
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      相关资源
      最近更新 更多