gpt4 book ai didi

database - 尽管不需要使用它来唯一标识记录而不是我们有另一个唯一标识符,但在模型中使用 Id 属性是否更好?

转载 作者:搜寻专家 更新时间:2023-10-30 22:23:44 24 4
gpt4 key购买 nike

尽管不需要使用它来唯一标识记录,但将模型中的 Id 属性作为主键是否更好?我正在使用 asp.net 核心和 Entity Framework ,这是我的模型

    public class PreRegistration
{
public int Id {get; set;}
public string PhoneNumber {get; set;}
public string VerificationCode {get; set;}
}

当我可以轻松地使用电话号码进行识别时,我的模型有一个整数 ID(自动递增)是否有用/更好?在 ASP.NET Identity Core 中,当我们可以轻松地使用 Email、UserName 等属性来唯一标识记录时,IdentityUser 模型具有 Id 属性。为什么会这样?

最佳答案

出于以下几个原因,最好在表上使用代理键:

  • 电话号码、电子邮件地址和用户名会更改,即使您向您保证它们永远不会更改。它可能就像需要允许修复用户在数据输入过程中输入的错误一样简单。
  • 数字键更容易在数据模型中引用。每个外键引用都需要键值的副本。
  • 数字键非常容易索引,并且受标识列机制的支持。
  • 有些框架在没有简单数字键的情况下无法很好地进行更新和删除。

可能还有其他充分的理由,但最引人注目的是第一点——更改已用作主键并被引用为外键的数据的困难。

当然,如果您打算将电话号码用作主键,则电话号码可能需要是唯一的,因此请继续为电话号码添加唯一约束。

关于database - 尽管不需要使用它来唯一标识记录而不是我们有另一个唯一标识符,但在模型中使用 Id 属性是否更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56833376/

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