我对 StoreGeneratePattern 的最高效的方式感兴趣。
过去我习惯让数据库为我生成ID,但我想知道设置是否有任何优势
StoreGeneratedPattern = None
代替
StoreGeneratedPattern = Identity
我什至不确定将其设置为“计算”时会发生什么。
有什么建议吗?有没有与此相关的好文章,因为 msdn 解释得不是很清楚。我在架构中主要使用整数,很少使用 GUID。
检查我的博客文章 https://web.archive.org/web/20110707002413/http://www.ladislavmrnka.com/2011/03/the-bug-in-storegeneratedpattern-fixed-in-vs-2010-sp1/ about StoreGeneratedPattern
。它解释了之间的一些差异Identity
and Computed
。使用时StoreGeneratedPattern
对于 ID (PK),正确的选项是None
如果您在应用程序中分配 ID 或Identity
如果您在数据库中分配ID。Computed
选项是“无效”的,因为在每个实体持久化期间(也在更新中)值发生更改时使用此选项,而 ID 则不然。
和...之间的不同Identity
and Computed
是执行的 SQL 命令的行为。如果财产是Identity
EF 将选择插入后的值并将其返回给您的应用程序。如果财产是Computed
EF 将选择插入和更新后的值并将其返回给您的应用程序。
Edit:
StoreGeneratedPattern.Identity
与数据库中的身份无关。您不需要在数据库中拥有身份,您可以使用一些不同的技术设置ID(guid或触发器的默认值),但您仍然需要StoreGeneratedPattern.Identity
让您的应用程序获得价值。
一旦您使用Identity
or Computed
对于数据库生成的列,EF 将始终在每次插入或更新后使用 Select 进行操作。没有它它就无法工作。这些命令在数据库的单次往返中执行,因此几乎没有性能影响。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)