2012-02-15 8 views
0

私のドメインには、プロパティにセッターを持たないエンティティがあります(奇妙な特殊ケースを除く)。したがって、すべての値はコンストラクタを介して渡されなければなりません。セッターなしのエンティティをバインドするモデル

問題は、モデルバインダーがフォームフィールドをモデルにバインドしようとすると、CREATEビューのモデルとしてドメインエンティティを使用するようになったため、No parameterless constructor defined for this objectというエラーが発生しています。

これを回避するにはどうすればよいでしょうか。私が考えることができるのは:

  1. 新しいモデルバインダーを作成しますか?
  2. FormCollectionをエンティティに変換するビューで使用される各エンティティのマッパーを作成します。
  3. エンティティのViewModel表現を作成し、それを元のエンティティクラスにマップしてから、MVCをサービスレイヤに送信します。
  4. セッターを組み込むようにエンティティをリファクタリングします。

セッターを組み込んでエンティティを開くことは本当にありません。誰にもヒントはありますか?可能な最も簡単で清潔な方法が理想的です。

答えて

0

これを行うための最もクリーンな/推奨/エラーのない/保守しやすい方法は、です。3. ViewModelを作成します。 ViewModelは、ビューを作成するために必要なフィールドのみを持ちます。それを検証し、ドメインモデルに変換して(多分AutoMapperを使用して)、サービスレイヤーに送信します。

関連する問題