【发布时间】:2014-05-20 09:39:08
【问题描述】:
我从 Evans 的书中了解到,聚合根是在域中唯一可识别的实体。
现在,我正在建模一个聚合根,它可以由一个由它的三个属性组成的字符串唯一标识 - “ProjectCode-Date-CollectionId”。
我可以将此字符串用作我的聚合根的身份键还是应该使用代理键?
如果我使用代理键,那么每次将新条目添加到数据库时,我都必须查询表以查看这三个属性的组合是否已经存在。这样可以吗?
【问题讨论】:
-
我会避免使用这个伪密钥,因为它在域中没有意义。正确的方法是在域中强制执行唯一性,可以通过查询表以外的机制强制执行(唯一约束等 - 但这更多是实现细节)。
标签: entity-framework ef-code-first domain-driven-design aggregateroot