gpt4 book ai didi

c# - Entity Framework 中推荐的身份生成方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 08:58:36 25 4
gpt4 key购买 nike

我对 StoreGeneratedPattern 的最高性能方式很感兴趣。

以前我习惯让DB帮我生成ID,但我想知道这样设置有没有什么好处

StoreGeneratedPattern = None 

代替

StoreGeneratedPattern = Identity

我什至不确定将其设置为“已计算”时会发生什么。

有什么建议吗?有没有与此相关的好文章,因为 msdn 不是很清楚。在我的模式中,我主要使用整数和少量 GUID。

最佳答案

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

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

编辑:

StoreGeneratedPattern.Identity 与数据库中的身份无关。您不需要在数据库中拥有身份,您可以使用一些不同的技术设置 ID(guid 或触发器的默认值),但您仍然需要 StoreGeneratedPattern.Identity 才能将值(value)返回给您的应用程序。

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

关于c# - Entity Framework 中推荐的身份生成方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5333417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com