2

私は3つのプロジェクトを持つasp.net mvcソリューションを持っています

  • UI ASP.NET MVC
  • POCO 私のドメイン POCO オブジェクト
  • エンティティ フレームワークと t4 を使用してコンテキストと POCO クラスを生成するリポジトリ

UI プロジェクトで POCO クラスではなく ViewModel を使用する必要があります。

UI と For Repository のスキャフォールディングを個別に行う必要があります(リポジトリのスキャフォールディングから始めて、いくつかのコードをカスタマイズしてから、uicontrollers ビューのビューモデルをスキャフォールディングします)。

私は次のようにリポジトリプロジェクトでリポジトリスキャフォールディングを行います: scaffold Repository -ModelType POCO.User -DbContextType Context これは魅力のように機能しています

しかし、コントローラーのスキャフォールディングを使用する場合のデフォルトの mvcscaffolding テンプレート: scaffold Controller -ModelType POCO.User -ControllerName UsersController -DbContextType Repository.Context -Repository

  • ユーザーが既にコンテキスト内にいることが検出されるため、スキップされます (これは良いことです)。
  • モデルとして POCO.User を使用して wiews をスキャフォールディングします (それは私が望むものではありません。ViewModel クラスを生成して使用したいのです)。
  • リポジトリを生成します(リポジトリプロジェクトに既にリポジトリがあるため、これも良くありません)
  • 作成されたリポジトリでコントローラーをスキャフォールディングし、POCOをビューに送信します(あまり良くありません)

だから私はこの足場のようなことをしたい Controller -ModelType POCO.User -ControllerName UsersController -DbContextType Repository.Context -RepositoryType Repository.UserRepository -GenerateViewModel

これは、リポジトリの作成をスキップしますが、コントローラーで使用します。これは、poco から ViewModel を生成し、たとえば automapper を使用して mappion を作成し、ビューで viewmodel を使用します。

どこから始めればよいかについてのヘルプは高く評価されます。ありがとう

4

1 に答える 1

2

あなたが求めていることは理にかなっていますが、そのままでは利用できません。このコマンドを使用して、T4 テンプレートをオーバーライドできます。

> scaffold customTemplate Controller 

ただし、プロジェクト間で作業するには、powershell に飛び込んで独自のスキャフォルダーを作成する必要があります。

> scaffold customScaffolder ViewModel

詳細については、 Steven Sanderson のブログ投稿を参照してください。T4 テンプレートで DTO または POCO クラスを生成する方法については、このブログ投稿も参照してください。

于 2013-07-20T20:02:17.660 に答える