9

EntityFrameworkPOCOクラスとFluentValidationフレームワークでASP.NETMVCを使用しています。これは正常に機能しており、検証は正常に行われています(DataAnnotationsを使用しているかのように)。クライアント側の検証も機能しています。そして、私はそれにかなり満足しています。

これは私が書いているテストアプリケーションであり、新しいテクノロジーを一緒に動作させることができるかどうか(そしてそれらを途中で学ぶことができるかどうか)を確認するために作成しています。これで、実際のモデルをビューに渡すのではなく、ViewModelsを使用して実験する準備が整いました。私のサービスでAutoMapperのようなものを使用して、ModelからViewModelへのマッピングを行ったり来たりすることを計画していますが、最初に質問があります。

これは私の検証にどのように影響しますか?検証クラス(FluentValidationを使用して記述)は、モデルではなくViewModelに対して記述する必要がありますか?それとも、両方の場所で発生する必要がありますか?DataAnnotations(およびFluentValidation)に関する大きな問題の1つは、「どこでも」機能する1つの場所で検証を行うことができるということでした。そして、それは(ほとんど)その約束を果たしますが、ViewModelsを使い始めたら、その能力を失い、検証を2か所に戻す必要がありませんか?

それとも私はそれについて間違っていると思っていますか?

4

1 に答える 1

4

それとも私の考えが間違っているだけですか?

おそらく ;)

すべての検証コードを ViewModel に追加すると、実際のモデルの代わりにそれらを検証することになります。実際に変更するのは、どのオブジェクトが無効な状態に入る可能性があるかだけです。

現時点では、ViewModel のみを検証し、その情報を実際のモデルおよび DAO レイヤーに戻すだけで満足しています。ドメインが無効な状態に入ることができるかどうかは議論の余地のあるトピックですが、これまでのところ、この手法はうまく機能しています. 検証は 1 か所で行われ、永続ストアに無効なオブジェクトはありません。

于 2010-06-11T00:51:30.120 に答える