entity framework中推荐的身份生成方法是什么?
我对StoreGeneratedPattern最高效的方式感兴趣。
在过去,我习惯让DB为我生成ID,但我想知道设置是否有任何优势
StoreGeneratedPattern = None
代替
StoreGeneratedPattern = Identity
我甚至不确定当我将它设置为Calculated时会发生什么。
有什么建议? 有没有与此相关的好文章,因为msdn不是很清楚。 我在架构中使用的GUID很少使用整数。
查看关于StoreGeneratedPattern
博 StoreGeneratedPattern
。 它解释了Identity
和Computed
之间的一些区别。 使用StoreGeneratedPattern
作为ID(PK)时,如果在应用程序中分配ID,则正确的选项为None
如果在DB中分配ID,则为正确选项。 Computed
选项是“无效”,因为在每个实体持久性期间(也在更新中)更改值时使用此选项,而不是ID的情况。
Identity
和Computed
之间的区别是执行的SQL命令的行为。 如果属性为Identity
则会在Insert之后选择该值并将其返回给您的应用程序。 如果属性为Computed
EF将在Insert和Update之后选择该值并将其返回给您的应用程序。
编辑:
StoreGeneratedPattern.Identity
与DB中的Identity无关。 您不需要在DB中拥有Identity,并且您可以使用一些不同的技术(guid或触发器的默认值)设置ID,但您仍需要StoreGeneratedPattern.Identity
来将值返回给您的应用程序。
一旦您使用Identity
或Computed
EF将始终跟随每个Insert或Update with Select for db generated列。 没有它它就行不通。 这些命令在单个往返数据库中执行,因此几乎没有性能影响。