3

エンティティごとのリポジトリとビューごとのビューモデルを組み合わせて使用​​したい場合、どのように機能しますか?

私が調べることができるウェブサイトのヒントはありますか?誰かが簡単な例を挙げることができますか?

ありがとう

よろしくお願いします!

4

3 に答える 3

3

私は次の構造が好きです (有名なSteven Sanderson の Pro ASP.NET MVC シリーズから):

ドメイン プロジェクト (ビジネス ロジック):

  • 抽象フォルダー (リポジトリー・インターフェース)
  • 具体的なフォルダー (リポジトリの実装)
  • エンティティ (EF 生成クラス)

Web UI プロジェクト (MVC Web アプリ):

  • モデル (ビュー モデル)
  • ビュー
  • コントローラー
  • など、あなたはポイントを得る

主なことは、ビジネス ロジック (リポジトリを格納する必要があります) を Web UI (MVC プロジェクト) から分離していることです。

このシナリオでは、コントローラ クラスはドメイン層を参照し、DI/IoC を使用してリポジトリの正しいインスタンスを呼び出します。

コントローラ クラスの例:

namespace MyMvcProject
{
    using System.Whatever;
    using MyDomainLayer;

    public class MyController : Controller
    {
        private readonly IMyRepository _myRepository;

        public MyController(IMyRepository myRepository)
        {
            // Resolved using your favorite DI/IoC Container:
            this._myRepository = myRepository;
        }

        public ActionResult DoSomething()
        {
            var stuff = _myRepository.GetStuff();
            return View(stuff);
        }
    }
}
于 2012-02-19T18:39:25.023 に答える
2

AutoMapperを使用して、エンティティからモデルに、またはその逆にデータをコピーします。これにより、他の方法で書かなければならない多くの「配管」コードが削減されます。

于 2012-02-19T18:47:24.230 に答える
0

私はプロの開発者ではありませんが、Steve Sanderson のモデルは、モデルに対して直接ビューで作業しているため、一部のプロジェクトには適切なモデルではないと思います。すべてのプロパティではなく、いくつかのプロパティのみを表示したい場合はどうなりますか? モデル全体がビューに移動しています。

あなたのビューは、orm (トラフ リポジトリなど) からのモデルではなく、viewmodel クラスに対して機能する必要があると思います。

私が見つけている唯一の問題は、モデルからビューモデルへ、およびビューモデルからモデルへのマッピングプロセスです。説明させてください...

モデル - >ビューモデル間の方向は正常に機能しますが、他の方向(ビューモデルからモデル)では、ビューモデルは通常すべてを所有していないため、自動的に行う方法を見つけていませんモデルが持っているプロパティと、モデル オブジェクトに自動マップを実行すると、多くのプロパティが空になります。最後に、常にいくつかの手動マッピングを行う必要があります。

この状況に対するアイデアは歓迎されるかもしれません。ありがとう

于 2012-03-13T15:42:37.470 に答える