3

Я хочу проверить мои объекты модели домена, используя FluentValidation. Я прочитал an answer about validation in DDD, который использовал FluentValidation для проверки его сущности. Вот как он подтверждает свою сущность:Является ли проверка внутри проекта домена в DDD?

public class ParticipantValidator : AbstractValidator<Participant> 
{ 
    public ParticipantValidator(DateTime today, int ageLimit, List<string> validCompanyCodes, /*any other stuff you need*/) 
    {...} 

public void BuildRules() 
{ 
     RuleFor(participant => participant.DateOfBirth) 
       .NotNull() 
       .LessThan(m_today.AddYears(m_ageLimit*-1)) 
       .WithMessage(string.Format("Participant must be older than {0} years of age.", m_ageLimit)); 

     RuleFor(participant => participant.Address) 
      .NotNull() 
      .SetValidator(new AddressValidator()); 

     RuleFor(participant => participant.Email) 
      .NotEmpty() 
      .EmailAddress(); 
     ... 
} 

} 

Так что мой доменный проект зависит от библиотеки FluentValidation.

Но я думаю, что это плохая идея, что мой доменный проект зависит от сторонней библиотеки. Как я могу предотвратить эту проблему?

+0

Вот мой вопрос по теме. Ваш вопрос в значительной степени дублируется http://stackoverflow.com/questions/28395176/should-i-abstract-the-validation-framework-from-domain-layer/28397201#28397201 – plalx

+0

@plalx благодарит за ваш комментарий. Это мой ответ. –

+1

@SeyedMortezaMousavi. Если домен зависит от сторонней библиотеки, становится плохой идеей, если указанная библиотека связана с низкоуровневыми материалами, такими как связанные с веб-сайтом или связанные с персистентностью компоненты. – guillaume31

ответ

1

Как только ваши сущности не зависят и не полагаются на эту стороннюю библиотеку, все в порядке и действительно. Собственно, идея наличия домена-домена состоит в том, чтобы иметь общий язык между разработчиками и людьми из области бизнеса, поэтому он должен быть самым чистым и естественным, тогда вы могли бы показать домен бизнес-аналитику и сделать их понимать и обсуждать. Если в валидационном коде есть валидации, которые имеют смысл для бизнеса, это действительно так, на самом деле бизнес-аналитик может даже видеть его и делать точки (например, это правило проверки должно быть таким образом). Ваш код проверки отлично подходит для бизнеса.