3

ドメイン駆動設計は初めてですが、現在の c#.net プロジェクトに適用しようとしています。要件の 1 つは、ユーザーがエンティティに対してビジネス ルールを定義できるようにすることです (つまり、クライアント名が必要です)。さまざまなユーザー グループが独自のルール セットを定義するので、それらをデータベースに格納します。

仕様パターンを説明する記事をいくつか読みましたが、これを使用してデータベースに保存されているルールを適用する方法はありますか? 以前の非 DDD プロジェクトでは、エンティティに IList プロパティを設定し、GetBrokenRules(Client client) メソッドを呼び出してルールを読み込み、クライアントが有効かどうかを確認しました。仕様パターンを使用せずに、同じようなことをしたほうがよいでしょうか?

4

3 に答える 3

2

仕様パターンは、一連の検索条件によってリポジトリ内のエンティティを見つけようとすることに関するものです。(おそらく) オプションのパラメーターの長いリストを定義するのではなく、内部で使用している任意のクエリ言語に変換する代わりに、仕様を構築します。

あなたのビジネス ルールはエンティティの検証に関するものなので、仕様パターンはここではうまく適合しないと思います。不可能ではありませんが。

ルールをロードして GetBrokenRules メソッドを呼び出すという提案されたアプローチは、賢明な選択のようです。

于 2012-12-17T16:53:36.360 に答える
1

動的検証ルールは工場のパターンを叫びます。私はおそらく、ファクトリに検証ルールを生成させるルートをたどるでしょう。指摘したように、仕様は述語を構築するためのものです。

実装によっては、仕様を動的に構成して、プロパティ/モデル/コンテキストが有効かどうかを確認する述語を形成できますが、これは単一のルールを表します。

まだお持ちでない場合は、FluentValidation をチェックしてください。FluentValidation は非常に柔軟で、考えもしなかったアプローチを提供する可能性があります。

于 2012-12-17T17:37:05.993 に答える
0

仕様パターンはこれでいいと思います。まだ読んでいない方は こちらの本をチェックしてみてください。

ドメイン サービス内のデータベースから構築される複合仕様の作成を検討する必要があります。

于 2012-12-18T17:32:33.997 に答える