データベースを使用してデータ指向アプリケーションの文脈において、:その物事を:私は唯一のIdが正の数だった、または引数がnull
ないということのようなものを検証するためにFluentValidations
を使用していたFluentValidationsとどのような検証が行われますか?
データベースにヒットしませんでした。
しかし、しばらくしてからが実際にデータベースに照会することを検証しないのかと疑問に思った。そこで私はさらに検証することにしました。Validator
は、指定されたIDが正の数であることを検証するだけでなく、が存在することもまたであることを検証します。
これはバリデータの目標ですか?私はそれを悪用していますか?バリデータは複雑なビジネスルールもチェックする必要がありますか?
ありがとう!親指の一般的なルールは何ですか?私はWeb APIを実行しており、Validatorは各リクエストに対して動作します。たぶん、この側面のバリデーターは、Idが見つからないGetByIdのような共通のものを傍受することができます。しかし、要求がビジネスルールに従って満たす必要がある複雑な条件を検証することは理にかなっていますか?または、下位層で検証を実行し、条件が満たされていないときに適切な例外をスローする必要がありますか? – SuperJMN
これは要件によって異なります。コントローラで基本的な検証を実行することは理にかなっています(FluentValidationを組み込みのパイプラインに統合してModelStateを使用するか、Validatorを手動で呼び出してValidateを手動で呼び出すことができます)。しかし、より複雑なドメインやDB関連の検証では、いくつかの下位層でエンティティを検証する方が良いでしょう(私は、あなたがいくつかのサービス、リポジトリ、またはコマンドハンドラを持っていることを望みます)。また、手動で、またはデコレータ/インターセプタを使用して行うこともできます。障害を示すには、例外をスローしたり、検証結果を返すことができます –