1

私はDataAnnotations、主に必須フィールド、長さ、正規表現などの入力用に、検証用の属性を持つ複数の UI (ビュー) モデルがあるプロジェクトに取り組んでいます):

[Required]
public int Order { get; set; }
[Required]
[MaxLength(150)]
public string Title { get; set; }

コントローラーは、オブジェクトをサービス層に渡す前に、ModelState をチェックしてオブジェクトが有効であることを確認します。

現在、サービス レイヤーは、他の出力形式をサポートする新しいコントローラーや、オブジェクトをバッチでインポートするための別のユーティリティが必要になる可能性がある将来の変更に対応するために、オブジェクトの検証も行います。

私の質問は次のとおりです。コントローラーが UI モデルを処理し、サービス層がビジネス オブジェクトを処理するという懸念事項を分離する必要があることを知っているため、UI モデル オブジェクトをサービス層に渡したくありません。 UI モデル オブジェクトで検証規則を再利用しますか? それとも、サービス層のコードで複製する必要がありますか? それともDataAnnotations、ビジネス オブジェクトにも追加する必要がありますか?

最初に EF モデルを使用しているため、自動生成された POCO にこれらの注釈を追加する簡単な方法がわかりません。

4

1 に答える 1

0

FluentValidation を使用しないのはなぜですか? そうすれば、各ビュー モデルのバリデータを作成し、必要に応じて UI レイヤーとサービス レイヤーで実行できます。また、ビュー モデルを検証属性で装飾する必要もなくなります。http://fluentvalidation.codeplex.com/

于 2012-12-11T22:26:52.517 に答える