2

データベースにpersonテーブルがあるとします。新しい人がデータベースに追加されるたびに、PDFが生成され、誰かに電子メールで送信されます。

このロジックはモデルに組み込まれるので、アプリケーションはデータを渡して新しい人物を挿入するだけで、モデルはpdfと電子メールも処理しますか?

それとも、このロジックはコントローラーに入りますか?

これをモデルに組み込む必要があり、エンティティフレームワークを使用している場合、これを行うにはどうすればよいですか?.edmxモデルをラップする.csクラスを作成しますか?

4

1 に答える 1

2

そのようなロジックでコントローラーをいじくりまわしたくないのは私の理解です。コントローラに属するものは、ビューに渡されるモデルを定義するか、検証をオンまたはオフにします。コントローラが制御する必要のあるビュー関連のものは他にもいくつかありますが、それはほんの2、3です。私が言いたいのは、コントローラーがサービスまたはモックされたリポジトリーを呼び出してモデルを作成し、それらのモデルをビューに渡す責任があるということです。

あなたが説明していることを行うために、データアクセス層の上にあるサービス層を追加します(dal-EDMXとリポジトリが置かれている場所)。そのサービスレイヤーの内部では、メソッドまたはサービスを呼び出してPDFを生成し、電子メールを送信します。

リポジトリとデータアクセス層は、データベースのクエリとレコードの取得のみに関係する必要があります。これは、使用するORMまたはデータアクセスツールに関係ありません。取得されたレコードはサービスレイヤーに渡され、そこでデータに対してアクション(検証やPDFの送信など)を実行できます。次に、ビューに表示する必要のあるレコードの形式に関係なく、プレゼンテーションレイヤーが返されます。コントローラは、取得したデータに対して論理的なアクションを実行せず、代わりにデータをビューに渡します。

私が説明したアーキテクチャのレイアウトについてさらに詳しく知りたい場合は、それについてさらに洞察を提供させていただきます。

于 2012-06-27T19:06:31.403 に答える