Mar*_*ark 6 c# domain-driven-design aggregate repository ddd-repositories
我的项目中的哪个类应该负责跟踪已经创建了哪些聚合根,以便不为同一个实体创建两个实例.我的存储库应该保留它创建的所有聚合的列表吗?如果是,我该怎么做?我是否使用单一的存储库(听起来不对我)?另一种选择是封装这个"缓存"在其他地方是其他类吗?这个类看起来会是什么样的,它适合什么样的模式?
我没有使用O/R映射器,所以如果有一种处理它的技术,我需要知道它是如何做到的(如它使用的模式)能够使用它
谢谢!
我相信您正在考虑Martin Fowler 所描述的身份映射模式。
在对该模式的完整描述(在他的书中)中,Fowler 讨论了读/写实体(参与事务的实体)和只读(参考数据,理想情况下应该只读取一次并随后缓存在内存中)的实现问题。
我建议获得他的优秀书籍,但描述这种模式的摘录可以在 Google 图书上阅读(查找“福勒身份图”)。
基本上,身份映射是一个对象,它存储从数据库加载的实体对象,例如存储在哈希表中。映射本身存储在当前会话(请求)的上下文中,最好存储在工作单元中(对于读/写实体)。对于只读实体,映射不需要绑定到会话,并且可以存储在进程的上下文中(全局状态)。