在Entity Framework Core中实例化GUID是不好的做法吗?

时间:2018-11-20 14:00:22

标签: c# entity-framework-core guid

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

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

示例:

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

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

我正在考虑Guid由SQL Server中的顺序ID备份,如果我显式设置一个值,我想我将降低索引性能,因为它不再是顺序的?

我还没有找到答案,对此我感到很好奇。

1 个答案:

答案 0 :(得分:11)

我看到的是设计缺陷,而不是性能问题:模型不应生成其id。这是他们的责任。储存库使用Add方法。

Guid可以通过多种方式生成:例如,它可以是随机的或顺序的。有两种方法可以生成它们。因此,您将选择权限制在一个。

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