域驱动的设计值对象,如何确保独特的值
-
22-10-2019 - |
题
我正在建立问卷的创作者。问卷由部分组成,部分由页面和页面组成,包括问题。问卷是骨料根。
部分,页面和问题可以具有所谓的短号,这些短号在问卷中应该是唯一的(但在数据库中不是唯一的,因此它们并不是严格的身份)。我打算将快速代码为价值对象,并希望包括在问卷中应该是唯一的业务规则,但我不确定如何确保这一点。我的理解是,值对象不应访问存储库或服务层,因此如何找出它是否唯一?
谢谢你的帮助。
达伦
解决方案
您可以将快速代码生成短码的责任分配给问卷聚集。它可以基于嵌入问卷对象的简单计数器。每个想要创建短代码的实体都会调用其包含问卷的NextShortCode()方法,以获取下一个唯一(当前问卷的范围)短代码值。
其他提示
显然,您将需要数据库中的PK字段。您如何实现您的决定,但是如果是我,我将把PK字段带入您的值对象,以便自动处理。
您想使用像 GUID 或uuid。确切的生成方式确切将取决于您用于应用程序的语言。
不隶属于 StackOverflow