次のパターンでDDDを実行しようとしています。DDD - ビジネス上の決定はデータベースロジックに基づいています
Controller-----DataContract----> Domain Layer (DDD)
Controller-----Domain Object---> Repository---Entity--->EntityFramework
あなたは上の図でわかるように、ドメイン層は、ビジネス上の意思決定を行うためには無関係ですが、私の場合には、ビジネス上の意思決定のほとんどは、その場で撮影されています。あなたは上記の例を見るとわかるように、例えば
if(Account Number Associated?)
Load CustomerDetails //A database call is needed
....
.....
if(Has customer another loan)
.....
.....
Load other loan details //A database call is needed
.....
.....
if(Was that repaid?)
....
....
Load collateral details //A database call is needed
.....
.....
Calculate collateral details and return.
else
Load other data //A database call is needed
else
Load other data //A database call is needed
else
Load other data //A database call is needed
は、アプリケーションがデータベース呼び出しを行うことにより、その場でビジネス上の意思決定の多くを行うことです。 ドメイン・レイヤーは、リポジトリ・レイヤーに依存してはいけません。続行する方法はわかりません。
私は、データベース・コールのためのアプリケーションサービスを使用することができますが、その後ドメイン・レイヤーはそれで任意のロジックを持っていないでしょう。すべてのロジックはアプリケーションサービスに入っています。
私を助けてください。
-Pandian
こんにちは@VoiceOfUnreason、ありがとうございました。私の場合、最初の2つのアプローチは不可能です。このような「ドメインサービス」のgithub/codeの例を教えてください。また、「アプリケーションが実装を提供する」とは、「**アプリケーションサービス**が実装を提供する」という意味ですか? – Pandiarajan