1

クエリに基づいて X 個のレコードを取得するストアド プロシージャを作成します。この SP は、検索中にレコードをロックする必要がある場合があります。悲観的ロックを使用できないことがわかっているEFも使用しています。

クエリ自体にフィルタリング ロジックを含める代わりに、仕様パターンを使用して、ビジネス ロジックがクエリを指示することを考えていました。このパターンを使用して仕様をリポジトリに渡し、リポジトリが SP を呼び出す場合、SP は仕様をどう処理するかをどのように知るのでしょうか?

仕様は、複数のテーブルにまたがる基準と異なる列での並べ替えで構成できます。

このシナリオで仕様パターンを使用することは理にかなっていますか?それとも、そこで定義されたクエリとフィルタリングを使用して SP を作成する必要がありますか?

4

2 に答える 2

2

仕様パターンは、アプリケーションでクエリを定義して実行するためのものです。Linq は一種の仕様です。ストアド プロシージャは、データベース サーバーでクエリを直接定義して実行するためのものです。これら 2 つは、ほとんど相反するアプローチです。

ストアド プロシージャ内に動的 SQL を作成する可能性がありますが、これによりロジックが DDD とは関係のないデータベースに移動されます。さらに、追加のテーブルを結合する必要がある任意のフィルターにこのようなソリューションを許可するのは非常に複雑です。

于 2012-05-01T10:43:11.750 に答える