2011-08-02 10 views
0

私はアプリケーションにユーザーエンティティを登録して、ユーザーがアプリケーションに登録するときに基本的な情報を入力します。彼らはいくつかの高度な機能を使用したい場合は、完全な情報を与える必要があります。異なるモデル検証シナリオ

私は2つの検証シナリオを持っています。

私の最初のアプローチは、Required属性をMyRequired属性と交換して、Entity Framework経由でデータベースにNOT NULLとして作成される列を避けることでした。

しかし、モデルをDBコンテキストに追加するとモデルの検証が行われます。エンティティが基本情報で満たされている場合は追加できません。

ある方法がありますかいくつかの異なる検証シナリオを持つ1つのエンティティ

答えて

3

さまざまなシナリオでモデルを検証する方法はありますか?

これはビューモデルが想定していることです。ビューにEFモデルを渡さないようにすることをお勧めします。また、EFドメインモデルをあなたのアクションに渡すことも避けてください。>常にビューモデルを使用します。これらのクラスは、検証属性を含む、特定のビューの要件を満たすように特別に設計されています。その後、モデルエンティティをビューモデルにマッピングします。

このように、ドメインモデルは、特定のビューで情報が提示される方法から完全に切り離されています。同じドメインモデルでは、ビューごとに2つの異なる表現を持つことができますが、もちろん、ビューのモデルによってこのギャップが埋まることもあります。

+0

同じprioperty-namesを使用する場合、ビューモデルをエンティティに簡単にマッピングする方法はありますか? – Michael

+1

@Michael、はい、個人的に私は[AutoMapper](http://automapper.codeplex.com/)を使っています。私は多くのプロジェクトでそれを使用して、それは素晴らしいも実行します。 –

関連する問題