1

在过去的几个月里,我们一直在使用 DDD 和 CQRS 实现一个应用程序。我仍然在努力解决的一件事是持久化数据的最佳方式,尤其是对于不同类型的多个数据源。

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

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

有没有我忽略的模式可以帮助我们解决这些问题?

4

1 回答 1

3

我读过一些意见,我们应该将持久层(IE 实体框架、文件系统、Web 服务)暴露给 DDD 层,并让存储库直接访问它们

存储库模式的存在是为了保护域免受持久性细节的影响。您当然不希望在其中添加额外的抽象层。无论您使用什么持久性技术,存储库都可以了解详细信息。

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

您说您正在实施 CQRS 应用程序。你没有阅读模型吗?存储库正在补充实体以完成写入业务案例,而不是读取。

于 2015-02-06T12:57:07.250 回答