FluentValidator, как валидировать поле при условии, что другое поле уже прошло проверку?
Допустим, что есть такая модель:
class Test
{
public int Id { get; set; }
public Guid Guid { get; set; }
}
Как можно провалидировать св-во Guid
, если Id
, например, есть в базе данных?
Что я пробовал и что получилось - проверка Id
в базе, но как исходя из ответа на валидацию Id
сделать валидацию для Guid
? Т.е. если Id
не прошел валидацию, то Guid
не стоит валидировать вообще.
class TestValidator : AbstractValidator<Test>
{
public TestValidator()
{
RuleFor(x => x.Id).MustAsync(CheckIdInDb);
}
private Task<bool> CheckIdInDb(int arg1, CancellationToken arg2)
{
//...check in db
return Task.FromResult(true);
}
}
When
не сработает, там простой предикат, да и дважды ходить в базу не хотелось бы.
Источник: Stack Overflow на русском