Identity 为我生成 UserToken 表(代码优先)。我不喜欢它使用 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# 项目代码中)表以仅使用一个 id 列作为主键?或者在这种情况下它实际上是一个好的做法?
我已经阅读了很多关于如何更改用户表中的 id 数据类型的说明,但情况有点不同。
最佳答案
您可以通过创建 IDENTITY
列并在相关的三列上创建 UNIQUE 索引来手动更改表结构...
但是为什么?
识别框架将始终根据三值元组查找数据,而不是根据不反射(reflect)任何真实数据的人工主键查找数据。
如果此值用作另一个表的引用,标识列可能有意义,在这种情况下,可能有理由使用简单的外键而不是三值元组。
如果您仍然不相信就这样离开 table :-) :
如果您想自定义 ASP.NET Identity 使用的表/数据库布局,this post可能是一个很好的起点(请注意,这篇文章是基于 ASP.NET 核心身份的)。
背景:ASP.NET 基于分层方法,其中用于保存有关 ASP.NET 身份信息的存储是 separate module。在 ASP.NET 身份框架内。
您可以以此为起点,使用您自己的数据库模型创建您自己的持久层。
关于c# - 在 ASP.NET Identity Core 中,我可以更改 UserToken 主键吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41550465/