首页 > 解决方案 > 在 Entity Framework Core 中实例化 GUID 是不好的做法吗?

问题描述

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

我知道它将由实体框架隐式设置,但是显式设置会发生什么不好的事情(也许是性能方面的)?

例子:

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

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

我在想 aGuid由 SQL 服务器中的顺序 ID 支持,如果我明确设置一个值,我想我会降低索引性能,因为它不再是顺序的?

我一直无法找到答案,对此我非常好奇。

标签: c#entity-framework-coreguid

解决方案


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

Guid可以通过多种方式生成:例如,它可以是随机的或顺序的。有不同的算法可以生成它们。因此,您的选择仅限于一个。

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


推荐阅读