Проверьте коллекцию с помощью FluentValidation, возвращающего одну ошибку невыполнения правила для свойства.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Проверьте коллекцию с помощью FluentValidation, возвращающего одну ошибку невыполнения правила для свойства.

Сообщение Anonymous »

Я только начал использовать FluentValidation v9.x и мне интересно, как проверить правила в коллекции.
В основном, если у меня есть коллекция веществ

Код: Выделить всё

public class Substance
{
public int? SubstanceId { get; set; }
public string SubstanceName { get; set; }
public decimal? SubstanceAmount { get; set; }
public int? SubstanceUnitId { get; set; }
public int? SubstanceRouteId { get; set; }
public DateTimeOffset? SubstanceTime { get; set; }
}
и я хочу проверить, что:
  • имеют ли SubstanceAmount и SubstanceUnitId значения, и
  • если SubstanceRouteId имеет значение и
  • если SubstanceTime имеет значение
    для любого из элементов вещества.

    Я хочу отправить по одному сообщению об ошибке для каждого из правил, если они не выполняются, а не для каждого вещества, что происходит сейчас со следующим:

    Код: Выделить всё

    RuleForEach(x => x.SubstanceList).SetValidator(new SubstanceValidator(RuleSetsToApply));
    
    public class SubstanceValidator : AbstractValidator
    {
    public SubstanceValidator(List RuleSetsToApply)
    {
    string ruleSetName = "SubstanceAmountUnit";
    RuleSet(ruleSetName, () => {
    RuleFor(x => x.SubstanceAmount).NotNull().NotEmpty();
    RuleFor(x => x.SubstanceUnitId).NotNull().NotEmpty().GreaterThan(0);
    });
    
    ruleSetName = "SubstanceIngestion";
    RuleSet(ruleSetName, () => {
    RuleFor(x => x.SubstanceTime).NotNull().NotEmpty();
    });
    
    ruleSetName = "SubstanceRoute";
    RuleSet(ruleSetName, () => {
    RuleFor(x => x.SubstanceRouteId).NotNull().NotEmpty().GreaterThan(0);
    });
    }
    }
    
    Итак, если у меня есть пять веществ и
  • первое вещество не соответствует Правилу №2,
  • третий не соответствует Правилу №1 и №2 и
  • четвертый не соответствует Правилу №3,

    Я ожидаю, что для каждого правила будет возвращена одна ошибка, даже несмотря на то, что правило №2 не удалось выполнить дважды.
Как я могу это сделать ?

Подробнее здесь: https://stackoverflow.com/questions/667 ... -error-for
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»