私の mvc3 プロジェクトには次のレイヤーがあります。
コントローラ -> サービス -> リポジトリ。
ViewModel を Entity にマップする必要がありますが、どのレイヤーにコードを配置するのが適切かわかりません。
コントローラーまたはサービスのいずれかを知っています。どちらを使用する必要があるか、およびその理由を教えてください。
ありがとうございました。
私の mvc3 プロジェクトには次のレイヤーがあります。
コントローラ -> サービス -> リポジトリ。
ViewModel を Entity にマップする必要がありますが、どのレイヤーにコードを配置するのが適切かわかりません。
コントローラーまたはサービスのいずれかを知っています。どちらを使用する必要があるか、およびその理由を教えてください。
ありがとうございました。
ViewModel を Entity にマップする必要がありますが、どのレイヤーにコードを配置するのが適切かわかりません。
もちろんコントローラー。サービス レイヤーとリポジトリ レイヤーは、ビュー モデルの意味を認識していません。ドメイン モデルのみを操作します。
そのため、コントローラー内で.Map<TSource, TDest>
呼び出しを使用して、ドメイン モデルとビュー モデルの間でマッピングを行ったり来たりします。ただし、マッピング定義自体 (.CreateMap<TSource, TDest>
呼び出し) は、AppDomain の有効期間ごとに 1 回、理想的にはProfile
.
それでは、RESTful な用語でコントローラー アクション内の典型的なワークフローをいくつか考えてみましょう。
GET
(RDBMS用語でSELECT):
PUT
(RDBMS用語で挿入):
DELETE
(RDBMS用語でDELETE)
POST
(RDBMS用語で更新):
.Map<TSource, TDest>
メソッドの次の void オーバーロードに変換されます。Mapper.Map<ADomain, ViewModel>(domainInstanceControllerRetrievedUsingTheId, viewModelInstancePassedAsArgument);
これら 4 つのワークフローがあれば、CRUD の世界に進む準備が整います。
PS REST リマインダー:
Create = PUT
Retrieve = GET
Update = POST
Delete = DELETE