3

現在、Entity Framework v4エンティティに基づくリポジトリがあります(CRUDおよびGET操作が実装されています)。これらのエンティティに対応するビューモデルを作成中です。それらの間に変換/マッピングをどこに置くべきですか?コントローラで、またはリポジトリを変更して、そのメソッドでマッピングを実行し、ビューモデルタイプのオブジェクトに戻る(または受け入れる)ようにしますか?

私はこれをすべきですか

    public ActionResult Index()
    {
        var person = new PersonRepository().Get();

        var personViewModel = new PersonViewModel();
        personViewModel.InjectFrom(person)
            .InjectFrom<CountryToLookup>(person);

        return View(personViewModel);
    }

またはこれ

     public ActionResult Index()
        {
            var personViewModel = new PersonRepository().Get(); // returns object of type PersonViewModel

// and move this to repository
//            var personViewModel = new PersonViewModel();
//            personViewModel.InjectFrom(person)
//               .InjectFrom<CountryToLookup>(person);

            return View(personViewModel);
        }
4

2 に答える 2

3

それをコントローラーのプライベートメソッドに抽出するか、他の場所で再利用する場合はサービスクラスに入れます。

一般的でない限り、リポジトリに配置するのは良い考えではないと思います。私の意見では、ジェネリックリポジトリが揺らいでいるからです。

于 2011-01-18T17:29:27.503 に答える
1

私はあなたのリポジトリに変換コードを入れることは決してありません。

  • リポジトリは、他の懸念からデータアクセスを抽象化します。ビューの要約
  • 他の懸念からのUIフォーマット。

2つを混合することは、注意深いデカップリングをすべて捨てることになります。

MVCの本の定義は、変換をコントローラー内で実行する必要があることを強く示唆しています。

コントローラーは入力を受け取り、モデルオブジェクトを呼び出すことで応答を開始します。コントローラーはユーザーからの入力を受け取り、その入力に基づいてアクションを実行するようにモデルとビューポートに指示します。

于 2011-01-18T17:34:38.237 に答える