Domain driven design 我需要在其中放置与在域驱动设计中存储实体相关的代码

Domain driven design 我需要在其中放置与在域驱动设计中存储实体相关的代码,domain-driven-design,ddd-repositories,ddd-service,Domain Driven Design,Ddd Repositories,Ddd Service,我正在尝试使用域驱动设计设计应用程序,我对实体数据的存储有疑问。首先,我创建一个实体并对该实体应用业务规则。最后,我想存储这些数据。我使用存储库模式来抽象数据库操作。现在,我需要放置与将实体数据保存到数据库相关的代码。它是否进入实体?或者域服务?与持久性相关的代码将放在基础架构层。我通常将其放入自己的程序集中,并将存储库的特定实现注入到应用程序层 您肯定不希望实体或域服务中有任何数据库代码。我还将持久性相关的代码保留在基础结构层,即具体类中,我正在将这个具体类注入域层中可用的接口中。因此,我需要

我正在尝试使用域驱动设计设计应用程序,我对实体数据的存储有疑问。首先,我创建一个实体并对该实体应用业务规则。最后,我想存储这些数据。我使用存储库模式来抽象数据库操作。现在,我需要放置与将实体数据保存到数据库相关的代码。它是否进入实体?或者域服务?

与持久性相关的代码将放在基础架构层。我通常将其放入自己的程序集中,并将存储库的特定实现注入到应用程序层


您肯定不希望实体或域服务中有任何数据库代码。

我还将持久性相关的代码保留在基础结构层,即具体类中,我正在将这个具体类注入域层中可用的接口中。因此,我需要调用接口方法将数据保存到持久性中,我应该在实体、域服务或应用程序服务中这样做。通常,您会在应用程序层调用存储库方法。有时也会从您的域服务。但是,请避免从实体执行此操作。我已经阅读了这篇文章“”,其中他们提到我们应该将存储库注入域对象。管理域对象之间的依赖关系是开发人员经常遇到的一个经典问题。对于这个问题,通常的设计解决方案是让服务或门面类直接调用存储库,当调用存储库时,存储库会将实体对象返回给客户端。这种设计最终导致上述领域模型的匮乏,facade类开始积累更多的业务逻辑,而领域对象仅仅成为数据载体。一个好的设计是使用DI&AOP技术将存储库和服务注入域对象。所有存储库检索/保存都应该在域服务或应用程序服务中进行。