ドメインモデルを使用したサービスがあり、クライアントにデータを公開したいと考えています。サービスには典型的なアーキテクチャがあります:データベース、ORM(EF)、ドメインモデルを備えたビジネスレイヤー。
WCF DataServicesを使用してデータをクライアントに公開したいのですが、ドメインモデルからクライアントにデータオブジェクトを送信できません。DTOを使用してクライアントと対話し、dto<=>データオブジェクトをマッピングします。
DataServicesには、この場合は問題ないように見えるリフレクションプロバイダーがあります(読み取り専用のシナリオを考えてみましょう)。ただし、リフレクションプロバイダーでは、IQueryable<dto>
プロパティを公開する必要があります。そしてこれが問題です。だから私はそれを解決するために次の方法を見ます:
- すべてのドメインオブジェクトをロードし、それらすべてをdtosにマップして、結果のdtosを返します。多くのドメインオブジェクトが存在する場合、本当に悪いアプローチです。
- 「linq2dto」プロバイダーを作成し、動的に対応する「linq2EF」クエリを生成します。クエリの実体化の時点で、dbからデータオブジェクトを取得し、マッピングを実行します。良さそうに聞こえますが、私が見るように、それは複雑な作業です。
だからみんな、私は助けが必要です。新しい1つのlinqプロバイダーを作成(およびサポート)したくありません。私が使用できる「一般的なlinq2anyware」の実現がどこかにあるのでしょうか。
一方、私は実際にデータオブジェクトをクライアントに公開してDataServicesEFプロバイダーを使用することはできません。そのようなマッピングを実装する簡単な方法はありますか?