従来の SQL Server ベースのシステム上に Web サービス レイヤーを作成しています。これは、SELECT ステートメントを実行する多数のストアド プロシージャを持つ、かなり大規模で複雑なビジネス アプリケーションです。これらのストアド プロシージャのほとんどは、多数のテーブルを結合し、クライアントが簡単に使用できるように単一の結果セットを生成します。
Web サービスを構築する際に EF を利用したいと考えており、Code First アプローチを使用すると、ユース ケースの 80% を直接テーブルにマッピングすることで実現できます。ただし、ストアドプロシージャによって提供されるデータのクロステーブルビューが必要なユースケースがいくつかあります。私が見ているように、私には3つのオプションがあります:
- ストアド プロシージャのリターンを表す新しい POCO を作成し、これらを既存のストアド プロシージャにリンクします (SQL に結合を実行させ、既存のコードを再利用します)。
- ストアド プロシージャのリターンのように見える新しい POCO を作成しますが、他の EF エンティティとの関連付けによって自分自身を設定します (EF に任せます)。
- 何らかの形でLINQで結合を行う
私たちのほとんどが毎日直面していると思いますが、このような状況でのベストプラクティスは何だと思いますか?
ありがとう、アンディ