entity framework中推荐的身份生成方法是什么?

我对StoreGeneratedPattern最高效的方式感兴趣。

在过去,我习惯让DB为我生成ID,但我想知道设置是否有任何优势

StoreGeneratedPattern = None 

代替

 StoreGeneratedPattern = Identity 

我甚至不确定当我将它设置为Calculated时会发生什么。

有什么建议? 有没有与此相关的好文章,因为msdn不是很清楚。 我在架构中使用的GUID很少使用整数。

查看关于StoreGeneratedPatternStoreGeneratedPattern 。 它解释了IdentityComputed之间的一些区别。 使用StoreGeneratedPattern作为ID(PK)时,如果在应用程序中分配ID,则正确的选项为None如果在DB中分配ID,则为正确选项。 Computed选项是“无效”,因为在每个实体持久性期间(也在更新中)更改值时使用此选项,而不是ID的情况。

IdentityComputed之间的区别是执行的SQL命令的行为。 如果属性为Identity则会在Insert之后选择该值并将其返回给您的应用程序。 如果属性为Computed EF将在Insert和Update之后选择该值并将其返回给您的应用程序。

编辑:

StoreGeneratedPattern.Identity与DB中的Identity无关。 您不需要在DB中拥有Identity,并且您可以使用一些不同的技术(guid或触发器的默认值)设置ID,但您仍需要StoreGeneratedPattern.Identity来将值返回给您的应用程序。

一旦您使用IdentityComputed EF将始终跟随每个Insert或Update with Select for db generated列。 没有它它就行不通。 这些命令在单个往返数据库中执行,因此几乎没有性能影响。