在 Entity Framework 中实例化 GUID 是核心不良做法吗?

Is instantiating a GUID in Entity Framework Core bad practice?

如果我有一个带有 Guid 类型键的模型,在构造函数中显式设置 ID 是不是不好的做法?

我知道它会被 Entity Framework 隐式设置,但是显式设置它会不会发生任何不好的事情(可能是性能方面的)?

示例:

class MyModel
{
    public MyModel()
    {
        Id = Guid.NewGuid();
    }

    [Key]
    public Guid Id { get; set; }
}

我认为 Guid 由 SQL 服务器中的顺序 ID 备份,如果我明确设置一个值,我想我会降低索引性能,因为它不再是连续的?

我一直没能找到这个问题的答案,对此我非常好奇。

我看到的是设计缺陷而不是性能问题:模型不应生成它们的 id。这不在他们的责任范围内。存储库在 Add 方法中这样做。

Guid可以通过多种方式生成:例如,可以是随机的,也可以是顺序的。无论哪种方式,都有不同的算法来生成它们。因此,您只能选择一个。

并且您正在强制分配模型 id 的时刻:您可能不希望这样做以延迟其分配,直到可能需要保留模型。 例如,零 Guid 可能有助于了解某些模型尚未持久化。