在过去的几个月里,我们一直在使用DDD& amp; CQRS。我仍在努力的一件事是保持数据的最佳方式,特别是对于不同类型的多个数据源。
到目前为止,我们已经使用了DAL接口层,该DAL接口层具有该DAL的多个部分实现。然后在我们的Domain层中,我们使用存储库将我们的域对象构造/保存到n个DAL。这很好,直到我们进行一些更高级的操作,如分页和搜索。这要求我们不仅要映射我们的数据,还要映射我们的订购/搜索/分页标准。
我已经阅读了一些意见,我们应该将持久层(IE实体框架,文件系统,Web服务)暴露给DDD层并让存储库直接访问它们,这样他们就可以利用内置于ORM之类的功能。这对我来说就像一个漏洞的抽象。
是否有一种我忽略的模式可以帮助我们解决这些问题?
答案 0 :(得分:3)
我已经阅读了一些意见,我们应该揭露任何内容 持久层是(IE实体框架,文件系统,Web服务) 到DDD层并让存储库直接访问它们
存储库模式的存在是为了保护域免受持久性细节的影响。你当然不希望在那里增加一层抽象。无论您使用何种持久性技术,存储库都可以了解详细信息。
然后在我们的Domain层中,我们使用存储库来构建/保存我们的 域对象到n个DAL。这很好,直到我们到达 一些更高级的操作,如分页和搜索。
您说您正在实施CQRS申请。你有阅读模型吗?存储库是重新水合实体以实现写业务案例,而不是读取。