-1

データマッパーパターンを使用するデータアクセス層で作業します。コードの実際の構造は、たとえば次のとおりです。データアクセス層のデータベースをマッピングするためのデザインパターン[C#]

私は非常に多くのクラスを持ち、同じ名前のデータベーステーブルに対応しています。

私の質問は以下のとおりです。

  1. は私のアプローチは正しいですか?すべてのテーブルをマップしたら、それをドメインレイヤーで使用します。

  2. Mapperクラスでは、これらのクラスと同じ名前のテーブルのみで動作するメソッドを使用します。 (Personクラス - > Persons dbテーブル、Orderクラス - > Orders db tableなど)しかし、より多くのテーブルへの結合を含むデータベースからの高度な選択肢をマップする最良の方法は何ですか。たとえば、Personをすべて彼のOrders.と選択したいのですが、プロパティーList<Orders>を含むPersonのドメインモデルを作成し、PersonMapperと次のOrderMapperを使用する必要がありますか?

+1

マッパーと呼ばれる理由はわかりません。個人的に私はリポジトリです。私ができるなら、私はそれをすべて行うエンティティフレームワークを使用したいと思います。 –

+0

EF私は使用できませんでした...なぜリポジトリですか? –

+0

@DenisStephanov: 'DataAccessLayer'世界では、あなたの' PersonMapper'クラスは一般に 'PersonRepository'と呼ばれます。 'Mapper 'という言葉は' DAL'の意味が異なります。 –

答えて

3

DAOパターンを参照してください。

一般的には、データベース内のすべてのテーブルに対して、エンティティとそのデータベースと通信するデータベースクラスであるDaoクラスがあります。

たとえば、Person、PersonDao、Databaseなどです。

人物はエンティティです。 PersonDaoはデータベースクラスを使用して、人物表のデータベースのみを照会します。 データベースはデータベースのCRUDクラスです。

関連する問題