在 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 .
您可以以此为起点,使用您自己的数据库模型创建您自己的持久层。
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 .
您可以以此为起点,使用您自己的数据库模型创建您自己的持久层。