在 ASP.NET Identity Core 中,我可以更改 UserToken 主键吗

In ASP.NET Identity Core can I change UserToken primary key

Identity 为我生成 UserToken table(代码优先)。我不喜欢它使用 3 部分主键并且没有指定的 UserTokenId 列。

CREATE TABLE [UserToken] (
    [UserId] int NOT NULL,
    [LoginProvider] nvarchar(450) NOT NULL,
    [Name] nvarchar(450) NOT NULL,
    [Value] nvarchar(max),
    CONSTRAINT [PK_UserToken] PRIMARY KEY ([UserId], [LoginProvider], [Name])
);

是否可以更改(在我的 C# 项目代码中)table 以仅使用一个 id 列作为主键?或者在这种情况下它实际上是一个好的做法?

我已经阅读了很多关于如何更改用户 ID 数据类型的说明table,但情况有点不同。

您可以手动更改 table 结构,方法是创建一个 IDENTITY 列并在相关的三个列上创建一个 UNIQUE 索引...

但是为什么?

识别框架将始终根据三值元组查找数据,而不是根据不反映任何真实数据的人工主键查找数据。

如果此值用作另一个 table 的引用,标识列可能有意义,在这种情况下,可能有理由使用简单的外键而不是三值元组。

如果您仍然不相信保留 table 原样:-) :

如果您想自定义 ASP.NET Identity 使用的 table/database 布局,this post 可能是一个很好的起点(请注意,此 post 基于ASP.NET 核心身份)。

背景:ASP.NET 基于分层方法,其中用于保存有关 ASP.NET 身份信息的存储是 ASP.NET 身份框架内的 separate module .

您可以以此为起点,使用您自己的数据库模型创建您自己的持久层。