加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 实体框架中推荐的身份生成方法是什么?

发布时间:2020-12-15 03:43:16 所属栏目:百科 来源:网络整理
导读:我对StoreGeneratedPattern最有效的方式感兴趣. 在过去,我习惯让DB为我生成ID,但我想知道设置是否有任何优势 StoreGeneratedPattern = None 代替 StoreGeneratedPattern = Identity 我甚至不知道当我将它设置为“计算”时会发生什么. 任何建议?有没有任何漂
我对StoreGeneratedPattern最有效的方式感兴趣.

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

StoreGeneratedPattern = None

代替

StoreGeneratedPattern = Identity

我甚至不知道当我将它设置为“计算”时会发生什么.

任何建议?有没有任何漂亮的文章与此相关,因为msdn不是很明白.我在我的模式中大部分使用几个GUID的GUID.

解决方法

检查我的 blog post关于StoreGeneratedPattern.它解释了Identity和Computed之间的一些差异.对于ID(PK)使用StoreGeneratedPattern时,如果您在应用程序中分配ID,或者如果在DB中分配ID,则正确的选项为“无”.计算选项为“无效”,因为在每个实体持久性(也在更新)中更改值时使用此选项,而不是ID的情况.

Identity和Computed之间的区别是执行的SQL命令的行为.如果属性为Identity EF,将在Insert后选择该值,并将其返回给您的应用程序.如果财产是计算EF将选择插入和更新后的值并将其返回到您的应用程序.

编辑:

StoreGeneratedPattern.Identity与DB中的Identity不相关.您不需要在DB中具有Identity,您可以使用一些不同的技术(guid或者触发器的默认值)来设置ID,但是您仍然需要StoreGeneratedPattern.Identity才能获得价值.

一旦您使用Identity或Computed EF将始终遵循每个插入或更新与Select选择为db生成的列.如果没有它就不行.这些命令在单个往返数据库中执行,因此几乎没有性能影响.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读