DDD中具有多个数据源的数据持久性

时间:2015-02-06 12:40:02

标签: c# design-patterns repository domain-driven-design data-persistence

在过去的几个月里,我们一直在使用DDD& amp; CQRS。我仍在努力的一件事是保持数据的最佳方式,特别是对于不同类型的多个数据源。

到目前为止,我们已经使用了DAL接口层,该DAL接口层具有该DAL的多个部分实现。然后在我们的Domain层中,我们使用存储库将我们的域对象构造/保存到n个DAL。这很好,直到我们进行一些更高级的操作,如分页和搜索。这要求我们不仅要映射我们的数据,还要映射我们的订购/搜索/分页标准。

我已经阅读了一些意见,我们应该将持久层(IE实体框架,文件系统,Web服务)暴露给DDD层并让存储库直接访问它们,这样他们就可以利用内置于ORM之类的功能。这对我来说就像一个漏洞的抽象。

是否有一种我忽略的模式可以帮助我们解决这些问题?

1 个答案:

答案 0 :(得分:3)

  

我已经阅读了一些意见,我们应该揭露任何内容   持久层是(IE实体框架,文件系统,Web服务)   到DDD层并让存储库直接访问它们

存储库模式的存在是为了保护域免受持久性细节的影响。你当然不希望在那里增加一层抽象。无论您使用何种持久性技术,存储库都可以了解详细信息。

  

然后在我们的Domain层中,我们使用存储库来构建/保存我们的   域对象到n个DAL。这很好,直到我们到达   一些更高级的操作,如分页和搜索。

您说您正在实施CQRS申请。你有阅读模型吗?存储库是重新水合实体以实现业务案例,而不是读取。