根据DDD(Blue book,Evans),工厂有责任在有效状态下创建一个聚合根。这是否意味着它应该能够创建技术ID(mongoDB世界中的objectId)以及域ID?DDD和MongoDB:可以让Mongo创建ObjectID吗?
一方面,这看起来像一个技术细节,让Mongo处理ID的创建似乎是可以的。
另一方面,通过id启用查询(通过在DDD存储库中使用getById
)将技术ID公开给域,这反过来将使其成为Factory的职责来创建它。
也许我无法理解技术标识与DomainId的不同使用情况/重叠等问题,或者我过于热衷,但无论如何,我都会很感激您的意见。
简而言之: 在DDD中:工厂是否应该能够创建技术ID以及域ID?
可能的实现:高/低(How to set the hilo sequence starting value in MongoDB Norm?)
编辑:虽然高/低的方式曝光工厂的持久层,这恐怕只有库应该知道。嗯
感谢
轻微不完全相关的评论; MongoDB实际上并不创建这些ID,客户端(驱动程序)确实(除了upsert操作)。 – 2012-08-03 16:06:49