データベース内のストアド プロシージャで ADO.NET コアを使用しました。次に、私が作成したツールを使用して、各ストアド プロシージャの結果を Dtos の構造として使用して、すべてのデータ アクセス コードを生成します。
ソース コード付きのツールは、私のブログ
Data Access Layer CodeGenで入手できます。
WCF サービスを介してデータを返すだけなので、DataReader から Dto に移動し、DTO をシリアル化する必要はありません。つまり、データを送信する過程で、結果セットを 3 回反復処理しています。そのため、サーバーのリソース使用率を減らしてパフォーマンスを向上させたい場合は、ツールが生成する "DataReader-Wrapper" クラスを (データ アクセス コードと共に) 使用できます。
DataReader ラッパー クラスは、厳密に型指定された DataReader に似ています。これらとその利点について話している別の投稿があります
DataReader Wrappers - TypeSafe
もちろん、ツールを変更して (ソース コードも持っているため)、WCF サービスを含むすべてのコードを生成することもできます。したがって、ストアド プロシージャを記述するだけで、完了です。すべての DataAccess コード (ADO.NET Core を使用しているため、軽量で超高速です)、ビジネス レイヤー コード、および WCF コードは、私が言いたいことを理解すれば、実際には「忙しい作業」です。
EDIT
ストアド プロシージャを使用する理由
- ストアド プロシージャは、1 回の呼び出しで複数の結果セットを返すことができます。
- ストアド プロシージャは、パラメーターを受け入れることができます。
- ストアド プロシージャには制御フロー ステートメントを含めることができ、他のストアド プロシージャを呼び出すことができます (そのため、他の複数のメソッドから呼び出すことができるように、メソッドをリフェクトするようなプロシージャの再利用が可能になります)。
- ツールはストアド プロシージャと非常にうまく連携するため、ストアド プロシージャの最適化ははるかに簡単です。