C# 在ASP.NET Identity Core中,我可以更改UserToken主键吗
Identity为我生成UserToken表(代码优先)。我不喜欢它使用由3部分组成的主键,并且没有指定的UserTokenId列C# 在ASP.NET Identity Core中,我可以更改UserToken主键吗,c#,asp.net,entity-framework,asp.net-identity,claims-based-identity,C#,Asp.net,Entity Framework,Asp.net Identity,Claims Based Identity,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_UserT
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数据类型的说明,但情况有点不同。您可以通过创建一个
标识列和在所讨论的三列上创建唯一索引来手动更改表结构
但是为什么呢
identify框架将始终基于三值元组查找数据,而不是基于不反映任何真实数据的人工主键
如果该值用作另一个表上的引用,则标识列可能有意义,在这种情况下,可能有理由使用简单的外键而不是三值元组
如果您仍不确定是否按原样离开桌子:-):
如果您想自定义ASP.NET标识使用的表/数据库布局,这可能是一个很好的起点(请注意,本文基于ASP.NET核心标识)
背景:ASP.NET基于分层方法,其中用于保存有关ASP.NET标识信息的信息的存储位于ASP.NET标识框架内
您可以将此作为使用自己的数据库模型创建自己的持久层的起点。这个主键很有意义,您不认为吗?避免重复数据是很重要的。我不确定用一个自动增量列替换这个键是不是一个好的做法,除非你的项目有一些特殊的特性,谁能解释这个需要?