根据DDD ( book,Evans),工厂有责任在有效状态下创建聚合根。这是否意味着它应该能够创建技术id (objectId在mongoDB世界中)以及域id?
一方面,这似乎是一个技术细节,似乎可以让Mongo处理ID的创建。
另一方面,启用id查询(通过在DDD存储库中使用getById )将技术id公开给域,这反过来又使工厂有责任创建它。
也许我无法理解技术Id和DomainId的不同用例/重叠等等,也可能我太热心了,但我还是会感谢您的意见。
简而言之:在DDD中:工厂应该能够创建技术Id和域Id吗?
可能的实施: Hi/Lo ( How to set the hilo sequence starting value in MongoDB Norm?)
编辑:--尽管hi/lo方法将工厂暴露于持久化层,但这是只有存储库才知道的。嗯,嗯
谢谢
发布于 2012-08-03 04:08:59
工厂不必担心ID,因为聚合的有效性与身份是正交的。标识可以通过几种不同的方式分配,要么作为关系数据库中的增量ID (在这种情况下,存储库必须管理它),要么作为UUID/GUID分配,在这种情况下,它可以由工厂或存储库分配,甚至调用客户端(这是方便的,因为这样客户端默认拥有密钥)。
只要有可能,我就尝试维护聚合的单一身份。我不确定MongoDB是否需要一个额外的技术ID,但是如果它需要并且不能使用域ID来代替它,那么MongoDB应该自己和幕后管理它。
https://stackoverflow.com/questions/11785530
复制相似问题