域驱动设计值对象,如何保证唯一值

时间:2010-06-01 17:48:03

标签: domain-driven-design ddd-repositories value-objects

我正在建立一个问卷创建者。问卷包括部分,部分由页面组成,页面由问题组成。调查问卷是聚合根。

章节,页面和问题可以包含所谓的短代码,这些短代码在问卷中应该是唯一的(但在数据库中不是唯一的,因此它们不是严格的身份)。我打算将短代码作为一个价值对象,并希望在调查问卷中包含它应该是唯一的业务规则,但我不确定如何确保这一点。我的理解是值对象不应该访问存储库或服务层,那么它如何确定它是否是唯一的?

感谢您的帮助。

的Darren

3 个答案:

答案 0 :(得分:0)

显然,您需要在数据库中使用PK字段。你如何实现这一点取决于你,但如果是我,我会将PK字段带入你的价值对象,以便自动处理。

答案 1 :(得分:0)

您可能希望使用类似Guid或UUID的内容。具体如何生成一个将取决于您的应用程序使用的语言。

答案 2 :(得分:0)

您可以将生成短代码的责任分配给问卷汇总。它可以基于嵌入问卷对象的简单计数器。每个想要创建短代码的实体都会调用其包含问卷的NextShortCode()方法来获取下一个唯一的(在当前问卷范围内)短代码值。

相关问题