如果我有一个键类型为Guid
的模型,在构造函数中显式设置ID是否是错误的做法?
我知道它将由Entity Framework隐式设置,但是从显式设置它会发生什么不好的事情(也许是性能方面的事情)?
示例:
class MyModel
{
public MyModel()
{
Id = Guid.NewGuid();
}
[Key]
public Guid Id { get; set; }
}
我正在考虑Guid
由SQL Server中的顺序ID备份,如果我显式设置一个值,我想我将降低索引性能,因为它不再是顺序的?
我还没有找到答案,对此我感到很好奇。
答案 0 :(得分:11)
我看到的是设计缺陷,而不是性能问题:模型不应生成其id
。这是他们的责任。储存库使用Add
方法。
Guid
可以通过多种方式生成:例如,它可以是随机的或顺序的。有两种方法可以生成它们。因此,您将选择权限制在一个。
您正在强迫分配模型id
的那一刻:您不希望这样做来推迟其分配,直到可能需要持久化模型为止。 例如,Guid
为零可能有助于了解某些模型尚未持久。