当前位置:  开发笔记 > 编程语言 > 正文

域驱动设计自动增量实体密钥

如何解决《域驱动设计自动增量实体密钥》经验,为你挑选了1个好方法。

刚从Domain Driven Design开始,我已经了解到你应该让你的模型处于有效状态,并且在创建类的新实例时,建议将所有必需属性作为构造函数参数.

但是,当使用自动递增的键时,我从持久层调用Add方法时只有这个新ID.如果我在没有密钥的情况下实例化我的对象,我认为它们将处于无效状态,因为它们需要某种唯一标识符.

在创建实体的新实例之前,我应该如何实现我的架构以获取我的ID?



1> theDmi..:

生成的随机ID

这里的实用方法是使用随机ID并在实例化实体之前生成它们,例如在工厂中.GUID是一种常见的选择.

在你问之前:不,你不会用完GUID :-)

具有ID预留的顺序ID

如果由于某种原因必须使用顺序ID,那么您仍然可以选择:

查询DB上的序列以获取下一个ID.这取决于您的数据库产品,例如Oracle有它们).

创建一个带有自动增量键的表,该键仅用作键保留表.要获取ID,请在该表中插入一行 - 现在为您保留生成的密钥,因此您可以将其用作实体的ID.

请注意,在您开始创建实体之前,顺序ID的两种方法都需要DB往返.这就是随机ID通常更简单的原因.因此,如果可以,请使用随机ID.

数据库生成的ID

另一种可能性是,只是在创建时没有ID这一事实,但只有在DB上的插入操作成功时.根据我的经验,这使得实体创建难以使用,所以我避免使用它.但对于非常简单的情况,它可能是一种有效的方法.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有