【问题标题】:Why does ASP.Net Core Identity using string for its Primary Key properties?为什么 ASP.Net Core Identity 使用字符串作为其主键属性?
【发布时间】:2020-04-17 05:16:09
【问题描述】:

默认情况下,ASP.Net Core Identity 使用 string 类型作为其内置实体的主键字段。例如,IdentityUser 类将属性Id 作为其主键,其类型为string。 (这在 SQL Server 中映射到类型 nvarchar(450)

如果发现这很奇怪,特别是因为默认情况下这些键的值实际上是 Guids 的字符串表示:

    public IdentityUser()
    {
        Id = Guid.NewGuid().ToString();
        SecurityStamp = Guid.NewGuid().ToString();
    }

为什么 ASP.Net Core Identity 的设计者选择使用 string 类型作为主键而不是类型 Guid

【问题讨论】:

    标签: asp.net-core asp.net-core-identity


    【解决方案1】:

    我目前无法评论您的问题,但我相信这可以回答您所问的问题:

    Why asp.net Identity user id is string?

    上面帖子的第二个答案: https://stackoverflow.com/a/30029268/11191898

    根据您使用的 ASP.Net 身份验证版本,数据库 ASP.NET Identity v2 应将其作为唯一标识符 (Guid) 存储在 AspNetUsers 表中。在更早的版本中,它将用户 ID 作为 int 存储在 pages_Membership 表中。

    我相信它将它显示为一个字符串,因此它可以是您喜欢的任何数据类型,然后可以根据需要在您的代码中强制转换。

    【讨论】:

    • 谢谢。该问题的第二个答案建议选择string 作为默认值,因为它可以表示任何其他数据类型(序列化)。如果您想编辑您的答案以包含此信息,我会投票赞成。 :)
    猜你喜欢
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多