gpt4 book ai didi

entity - 领域驱动设计自动递增实体键

转载 作者:行者123 更新时间:2023-12-02 10:01:22 25 4
gpt4 key购买 nike

刚刚开始领域驱动设计,我了解到您应该使模型保持有效状态,并且在创建类的新实例时,建议将所有必需的属性作为构造函数参数。

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

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

最佳答案

生成的随机 ID

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

在你问之前:No, you won't run out of GUIDs :-)

带 ID 预留的序列 ID

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

  • 查询数据库上的序列以获取下一个 ID。这取决于您的数据库产品,例如 Oracle 就有它们)。
  • 创建一个带有自动增量键的表,仅将其用作键保留表。要获取 ID,请在该表中插入一行 - 生成的键现在已为您保留,因此您可以将其用作实体的 ID。

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

数据库生成的 ID

另一种可能性是接受这样一个事实:您在创建时没有 ID,但只有在数据库上的插入操作成功时才​​具有 ID。根据我的经验,这会使实体创建难以使用,因此我避免使用它。但对于非常简单的情况,这可能是一种有效的方法。

关于entity - 领域驱动设计自动递增实体键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34315605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com