1

複数のストアド プロシージャ (プロシージャからの複数の結果セットではなく) を呼び出して、ASP.NET MVC 3 アプリケーションの 1 つのページに結果を表示することは可能ですか?

私が理解していることから、単一のページで作成できるモデルは1つだけであり、ストアドプロシージャはすでにそのモデルに関連付けられています。別のプロシージャを呼び出して、その結果も自分のページに表示したい

4

2 に答える 2

2

根本的な問題は、MVC パターンのモデルの意味を理解することだと思います。

初めに、

モデルはアプリケーション データとビジネス ルールで構成され、コントローラーは入力を仲介し、モデルまたはビューのコマンドに変換します。[3] ビューは、チャートやダイアグラムなど、データの任意の出力表現にすることができます

ソース

ASP.Net MVC では、モデルをビューにリンクします。このモデルは、ドメイン ロジックまたはドメイン オブジェクトの一部であってはなりません。

実際のモデル (MVC パターンの意味を使用) は、ドメイン オブジェクトによって表されます。

では、ビューにリンクするオブジェクトの中に何を入れる必要がありますか??

これらのオブジェクトには、ビューの表現、つまり、ビューで使用されるデータのみを含む単純な DTO が含まれている必要があります。これらのモデルは、ビューで使用されているデータを表す必要があります。このアプローチに従い、ページにさらに多くのデータを表示する必要がある場合は、このモデルに別のプロパティを追加するだけで、ビューから使用できます。

CQRS アーキテクチャでは、これらの DTO はクエリ リポジトリによって設定される必要があります。

CQRS アーキテクチャがない場合は、これらのオブジェクトをドメイン、リポジトリなどに入力するだけです。コントローラー内では行わないでください。サービスまたはリポジトリを使用して実際のドメインを呼び出すことにより、コントローラーをクリーンでシンプルに保ちます。

これらの DTO の再利用を避けるようにしてください。それらは 1 つのビューのみに属する必要があります。また、モデルとして使用するためだけに DTO の代わりにドメイン オブジェクトを再利用しようとしないでください。

このアプローチに従うと、ビューモデルは DTO のみになり、ビューに必要なデータのみが含まれるため、クリーンになります。また、これらの DTO は、必要に応じて異なるデータベースからでも、さまざまなソースから入力できます。

アクションを実行する場合、ユーザーが提供したデータをモデルから読み取り、このデータを使用して、リポジトリ、サービス、または CQRS アークでドメインを呼び出します。コマンドの使用

于 2012-06-12T23:31:00.557 に答える
1

あなたの質問に対する簡単な答えは「はい」です。

MVC についてさらに調査 (つまり、記事を読んだり、サンプル アプリを調べたり) を行い、次の点を理解することに専念することをお勧めします。

  • Modelは、Viewに表示するデータをグループ化するために使用されるクラスです。さまざまな方法で設定でき、ドメイン オブジェクトまたはデータベース結果の純粋な表現である必要はありません。
  • 「ページ」(ユーザーがブラウザ ウィンドウで見るものの概念) は、1 つ以上の Viewから構成できます。各ビューは、再利用を可能にする 1 つのタイプのモデルを表示する役割を果たしますが、「ページ」には複数 のビューを含めることができます。
  • モデルはストアド プロシージャに「関連付けられていません」。おそらく、DTO クラス (モデルと呼ぶ) を返す ORM ツールを使用していますか? これは、 Viewで使用されるModelである必要はありません。コントローラーは、これらの DTO クラスのいくつかを 1 つのモデル クラスに構成できます
  • データベース アクセスが表示ロジックから分離されている n 層アプリケーション設計。MVC はこれを奨励しようとしますが、複雑にならないように正しく行う必要があります。

幸運を!

于 2012-06-13T00:08:06.047 に答える