在过去的几个月里,我们一直在使用 DDD 和 CQRS 实现一个应用程序。我仍然在努力解决的一件事是持久化数据的最佳方式,尤其是对于不同类型的多个数据源。
到目前为止,我们已经使用了一个 DAL 接口层,以及该 DAL 的多个部分实现。然后在我们的域层中,我们使用存储库来构造/保存我们的域对象到 n 个 DAL。这很好用,直到我们进行一些更高级的操作,如分页和搜索。这要求我们不仅要映射我们的数据,还要映射我们的排序/搜索/分页标准。
我已经阅读了一些意见,我们应该将持久层(IE 实体框架、文件系统、Web 服务)暴露给 DDD 层,并让存储库直接访问它们,这样他们就可以利用内置的功能,例如ORM。对我来说,这感觉像是一个泄漏的抽象。
有没有我忽略的模式可以帮助我们解决这些问题?