FluentValidation - валидация данных с Fluent API

Поділитися
Вставка
  • Опубліковано 8 січ 2025

КОМЕНТАРІ • 29

  • @СтепанТихонов-т3ж
    @СтепанТихонов-т3ж 3 роки тому +13

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

    • @PlatinumTechTalks
      @PlatinumTechTalks  3 роки тому +1

      Спасибо вам большое за такой искренний, теплый и добрый комментарий! Это очень приятно и ценно для нас!

  • @tilllindemann9794
    @tilllindemann9794 Рік тому +1

    Один из самых полезных каналов по asp, который я находил

  • @IvanenkoStepan
    @IvanenkoStepan 3 роки тому +7

    Благодарю

  • @denisaleksandrov9626
    @denisaleksandrov9626 3 роки тому

    Идеальный плейлист.
    Спасибо)))

  • @serb1146
    @serb1146 2 роки тому

    NotEmpty() проверяет на null, на пустую строку, на white spaced, на не равенство default для типа и даже на пустую коллекцию. Спасибо за видео!

  • @valeriyfilippov9475
    @valeriyfilippov9475 Рік тому +1

    Созданный ValidationBehavior не будет работать при обновлении и удалении, т.к. он обрабатывает только те команды, которые реализуют интерфейс IRequest (работать будет только создание). Команды обновления и удаления реализуют IRequest. И ещё, вызывать валидацию лучше асинхронным методом ValidateAsync, т.к. в валидаторе может использоваться MustAsync и другие асинхронные методы

  • @Дмитрийм-л7ф
    @Дмитрийм-л7ф 3 роки тому +2

    Спасибо.

  • @foxesfox5870
    @foxesfox5870 2 роки тому

    Да и вообще, у нас обработка запроса:
    контроллер (тут понятно)
    медиатор:
    класс CreateNoteCommand прилетает в CreateNoteCommandHandler - нормально, но уже вопросы насколько обязательно заполнение пропсов
    контекст:
    в CreateNoteCommandHandler создаем и сохраняем Note (залезли в контекст, начали действовать ограничения EntitytTypeConfigurations) передавая поля экземпляра CreateNoteCommand, в котором эти поля у вас обязательны, но они ведь могут быть необязательны. Тогда логично отметить необязательные пропсы в классе CreateNoteCommand (который по сути является DTO-шным)
    Это проблема.
    Кстати говоря, если говорить конкретно про обязательность полей, я не вижу смысла прописывать это в EntitytTypeConfigurations, ведь можно в самой модели Note сделать пропс nullable. Есть ли в этом какой то практический смысл или вы вынесли в EntitytTypeConfigurations просто для примера?

  • @june3878
    @june3878 2 роки тому

    почему так мало просмотров!? это же кладезь

  • @BraentR
    @BraentR 3 роки тому +1

    Спасибо

  • @foxesfox5870
    @foxesfox5870 2 роки тому

    Вопрос. Мы используем валидаторы в слое application, можем ли мы пробросить валидации из слоя persistence? В этом есть смысл, ведь не нужно будет
    1 дублировать валидации
    2 волноваться о том, что мы какие то валидации забыли добавить в application
    ps речь об ограничениях сущностей базы entityttypeconfigurations

  • @ADMIRAL_RETARD
    @ADMIRAL_RETARD 3 роки тому

    Спасибо за видео. Возник вопрос А можно ли как-нибудь через наследование сделать одинаковую валидацию для разных команд? Т.е. чтобы не было копипасты одного и того же кода, например .NotEmpty() и тд. А сделать это как-нибудь через base.MethodName() из класса родителя в классах наследниках?

  • @bek15071991
    @bek15071991 3 роки тому

    А можно ссылку на исходник в каждом в видео в описании добавить?

    • @PlatinumTechTalks
      @PlatinumTechTalks  3 роки тому +4

      готово. под каждым видео были добавлены ссылки на код

  • @ashimovj.3893
    @ashimovj.3893 2 роки тому

    такая ошибка выходит, народ помогите пожалуйста
    ''ValidationBehavior' does not implement interface member 'IPipelineBehavior.Handle(TRequest, RequestHandlerDelegate, CancellationToken)'

    • @serb1146
      @serb1146 2 роки тому

      Сигнатуру метода проверь.

    • @shyxiaolong
      @shyxiaolong 2 роки тому

      вы реализовали интерфейс IPipelineBehavior в классе ValidationBehavior ? судя по ошибке нет

    • @Amir-xg4nn
      @Amir-xg4nn 2 роки тому +1

      Сигнатура метода Handle должна чуть отличаться от автора. (Все дело в порядке параметров)

    • @8-----3
      @8-----3 Рік тому

      @@Amir-xg4nn Спасибо, помог

  • @antya1126
    @antya1126 7 місяців тому

    Лучший канал по разработке на русском языке

  • @fadidib8516
    @fadidib8516 3 роки тому

    if only it was in english hehe.

  • @anshe2676
    @anshe2676 Рік тому

    После добавления кода из этого видео происходит ошибка при запуске приложения:
    System.AggregateException: 'Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: FluentValidation.IValidator`1[Notes.Application.Notes.Queries.GetNoteList.GetNoteListQuery] Lifetime: Transient ImplementationType: Notes.Application.Notes.Queries.GetNoteList.GetNoteListQueryValidator': A suitable constructor for type 'Notes.Application.Notes.Queries.GetNoteList.GetNoteListQueryValidator' could not be located. Ensure the type is concrete and services are registered for all parameters of a public constructor.) (Error while validating the service descriptor 'ServiceType: Notes.Application.Notes.Queries.GetNoteList.GetNoteListQueryValidator Lifetime: Transient ImplementationType: Notes.Application.Notes.Queries.GetNoteList.GetNoteListQueryValidator': A suitable constructor for type 'Notes.Application.Notes.Queries.GetNoteList.GetNoteListQueryValidator' could not be located. Ensure the type is concrete and services are registered for all parameters of a public constructor.)'
    и ещё одна:
    InvalidOperationException: A suitable constructor for type 'Notes.Application.Notes.Queries.GetNoteList.GetNoteListQueryValidator' could not be located. Ensure the type is concrete and services are registered for all parameters of a public constructor.
    если удалить код из класса GetNoteListQueryValidator.cs то всё работает...
    Где собака зарыта, подскажите?

  • @СергейХ-к6ъ
    @СергейХ-к6ъ 2 роки тому +1

    Спасибо за видео. При выполнении Get запроса localhost:44397/api/2.0/note при пустой базе выдает исключение Validation failed: -- UserId: 'User Id' не должно быть равно '00000000-0000-0000-0000-000000000000

    • @NikolayShelakhaev
      @NikolayShelakhaev 2 роки тому

      То же самое. Не удалось выяснить, в чём дело?

    • @antonpudikov3990
      @antonpudikov3990 2 роки тому +2

      Привет :) дело в том, что в BaseController UserId ставится как Guid.Empty для неавторизованных пользователей. Замените Guid.Empty на Guid.Parse("тут_некий_случайный_Guid_сгенерированный_где_то") и всё заработает.

    • @shyxiaolong
      @shyxiaolong 2 роки тому

      @@antonpudikov3990 верно, видео промежуточное планировалось что только атворизованные юзеры могут получать доступ к заметкам - логично