"保存"方法是否属于业务域实体?

dev*_*yst 6 entity domain-driven-design business-logic-layer 3-tier

我没有使用任何ORM.因此,我正在讨论"保存"方法是否实际上属于业务域实体,还是应该在某些服务中进行抽象,这些服务将通过业务域实体进行保存?

例如

class Employee
{
    string Name;
    DateTime Birth;

    GetAge()
    {

    }

    Save()
    {
    }           

}
Run Code Online (Sandbox Code Playgroud)

要么

class Employee
{   
    string Name;
    DateTime Birth;

    GetAge()
    {

    }


}

SomePersistenceService
{
    Save(Employee emp)
        {
        }
}
Run Code Online (Sandbox Code Playgroud)

Jer*_*oen 2

由于这个问题被标记为“领域驱动设计”,因此您需要一个存储库来为您完成它。


只需将 SomePersistenceService 重命名为 EmployeeRepository 即可。所以你的第二个选择是正确的。“在将移交给业务领域实体的某些服务中进行抽象”在领域驱动设计中称为存储库

存储库是一种将数据存储区视为集合的方法。所以它有像Addand之类的方法Remove,而不是Saveand Delete