以前は MVC デザイン パターンを扱ったことがありませんでしたが、最近、ASP.NET MVC を使用してプロジェクトに取り組み始めました。
データ層として ActiveRecord を使用しています。
また、ビュー モデル (ビューごとに固有) と AutoMapper を使用して、ビュー モデルを EntityFramework エンティティにマップしています。
MVC、EntityFramework について調査し、さまざまな記事を読んで数日で、次の設計を思いつきました。
私のソリューションには、ビューとコントローラーを含む Web プロジェクト (プレゼンテーション レイヤー) があります。
ViewModels と Services (すべてのビジネス ロジックが行くビジネス レイヤー) を定義するコア プロジェクトがあります。
すべてのEFエンティティが存在するEntityModelsプロジェクトがあります(データレイヤー)
この設計により、データ レイヤーをプレゼンテーション レイヤーから分離しておくことができます。Web プロジェクトは EntityModels プロジェクトについて何も知らず、その逆も同様です。すべてのロジックはビジネス レイヤーにあります。
コントローラーから (検証チェック後)、ビューモデルをサービス層に渡し、マッピングと必要なすべてのビジネス ロジックが実行されます。
このデザインは本当に正しいですか?
私の意見は、ViewModel はプレゼンテーション層で定義する必要があることを読んだことです。プレゼンテーション層がデータ層への参照を持ち、マッピングがコントローラーで行われる例を見ました (良い習慣ですか?)。この場合、コントローラーはドメイン モデルをビジネス レイヤーに渡します。私はここでの経験はありませんが、好きではありません。
それで、誰かが私が正しいところと間違っているところを指摘できますか?
前もって感謝します。