1

ASP.Net MVCを初めて使用しますが、Googleで答えが見つからないように思われる質問があります。

データベースへのデータの保存方法とは大幅に異なるモデルが必要なページがあります。データベースモデルから必要なMVCモデルに変換する関数を作成するのは簡単です(MyModel ConvertToMvcModel(DataFromDatabase d)。

私の質問、このコードはどこに置くべきですか?コントローラーにある必要があります。データアクセス層にある必要があります(リポジトリパターンを使用)。

もう1つの関連する質問は、リポジトリクラスをどこに配置する必要があるかです。これまで、すべてのモデルに対応するリポジトリがあるため、同じ.csファイルにモデルクラスと一緒にリポジトリクラスを配置していました。今回は、モデルがリポジトリから取得したものとは異なるため、同じファイルに入れることはあまり意味がありません。たぶん、すべてのDAL(リポジトリ)をモデルコードから分離する必要があります。

助言がありますか?

4

2 に答える 2

1

私の質問は、このコードをどこに置くべきですか?

ドメイン モデルとビュー モデル間のマッピングは、理想的には別の専用マッピング レイヤー内に配置する必要があります。たとえば、私が推奨するAutoMapperを使用する場合は、プロファイルと呼ばれる別のファイル内にマッピング定義を配置し、コントローラー アクション内で単にMapper.Map<TSource, TDest>メソッドを呼び出すことができます。

もう 1 つの関連する質問は、リポジトリ クラスをどこに置くべきかということです。これまで、すべてのモデルに対応するリポジトリがあったため、モデル クラスと一緒にリポジトリ クラスを同じ .cs ファイルに配置しました。

DAL はデータ アクセス レイヤーを表し、リポジトリが配置される場所です。リポジトリが従う (実装する) 必要がある共通の契約 (インターフェイス) を定義し、作業しているさまざまなデータ ソースに対していくつかの実装を行うことができます。

于 2012-05-21T21:39:24.383 に答える
1

とにかくエンティティを返すべきではありません。そのためにViewModelを使用してください。

マッピングに関して: 探しているものは既に存在し、AutoMapperと呼ばれます。サービス レイヤーがエンティティをコントローラーに返すようにすることができ、コントローラーはそれらを ViewModel オブジェクトにマップします。

マッピングは 1 回だけ初期化することに注意してください。そのため、アプリケーションの最初からマッピングを起動してください。

于 2012-05-21T21:39:40.367 に答える