アプリケーションがいくつかのアセンブリに分割されています。
MyProject.Infrastructureアセンブリには、 および などのすべての Domain オブジェクトとPerson
、 およびSale
などのインターフェイス リポジトリが含まれていIPersonRepository
ますISaleRepository
。
MyProject.Dataアセンブリには、これらのリポジトリの具体的な実装が含まれています。
リポジトリはデータベースからデータを取得し、新しいドメイン クラスをインスタンス化します。たとえばIPersonRepository.GetPersonByNumber(customerNumber)
、データ ソースから顧客を読み取り、新しいPerson
クラスを作成して入力し、呼び出し元に返します。
Person.UpdateAddress(address)
. _
このメソッドをPerson
仮想メソッドとしてクラスに配置し、必要な機能を提供するためにそれらのメソッドをオーバーライドする派生クラスをデータ層内に作成しても問題ありませんか?
DDD の規則を破らないようにしたいのです。
これらのメソッドをリポジトリに配置するオプションがあることも知っていますIPersonRepository.UpdatePersonAddress(person, address)
。