0

リポジトリ パターンとクエリ オブジェクト パターンに関する質問です。私は EF 4 を使用しており、VS 2010 で ADO.NET POCO Entity Generator を使用してデータベース モデルから POCO クラスを生成しました。edmx ファイルと tt ファイル (POCO クラス) は 2 つの異なるプロジェクトにあります。

私のリポジトリは、DocumentRepository や UserRepository などのドメイン固有のものです。私のデータベース モデルは、ドメイン オブジェクトを 1 つ以上のデータベース テーブルに (またはその逆に) 変換するためにマッパーを実装したほど、ドメイン モデルとは異なります。1 つの例は、私の Document ドメイン クラスがデータベース内の 3 つのテーブル (したがって POCO クラス) としてモデル化されていることです。

このような場合にドメイン オブジェクトを使用する場合、クエリ オブジェクト パターンをどのように実装しますか? 私の見方では、ドメイン クラスではなく、POCO クラスに基づいてクエリ オブジェクト ベースを作成する必要がありますか? しかし、それはリポジトリのパターンを壊しませんか?

4

1 に答える 1

3

ORM は通常、ドメイン オブジェクトを直接操作する方法で使用されます。つまり、ドメイン オブジェクトをデータベースからロードし、データベースに永続化します。ORMエンティティを使用してカスタムオブジェクトを埋めるためだけに、もう1つの抽象化ステップを実行しています。カスタム オブジェクトは完全に ORM ツールの範囲外であり、ORM ツールがドメイン オブジェクトの上に構築されたクエリのサポートを提供するとは期待できません。独自のクエリ サポートを構築し、ドメイン クエリをリポジトリ内の ORM クエリに変換する必要があります。これは通常、仕様パターンを実装することによって行われます。

ところで。このようなシナリオでは、POCO はあまり意味がありません (POCO は、ドメイン オブジェクトとして使用するシナリオ用です)。

于 2011-05-30T08:34:08.533 に答える