我的应用程序分为几个程序集。
MyProject.Infrastructure程序集包含所有域对象,例如Person和Sale以及接口存储库,例如IPersonRepository和ISaleRepository。
MyProject.Data程序集包含这些存储库的具体实现。
存储库从数据库中提取数据并实例化新的域类。例如,IPersonRepository.GetPersonByNumber(customerNumber)将从数据源中读取一个客户,创建一个新Person类,填充它并返回给调用者。
我现在开始看到向我的域类添加一些方法可能有意义的情况,例如Person.UpdateAddress(address).
是否可以将此方法Person作为虚拟方法放在我的类上,然后在我的数据层中创建派生类来覆盖这些方法以提供所需的功能?
我想确保我不会违反任何 DDD 约定。
我知道我也可以选择将这些方法放在存储库中 - 例如IPersonRepository.UpdatePersonAddress(person, address)。