Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET Identity Core中,我可以更改UserToken主键吗_C#_Asp.net_Entity Framework_Asp.net Identity_Claims Based Identity - Fatal编程技术网

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

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

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数据类型的说明,但情况有点不同。

您可以通过创建一个
标识
列和在所讨论的三列上创建唯一索引来手动更改表结构

但是为什么呢

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

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

如果您仍不确定是否按原样离开桌子:-): 如果您想自定义ASP.NET标识使用的表/数据库布局,这可能是一个很好的起点(请注意,本文基于ASP.NET核心标识)

背景:ASP.NET基于分层方法,其中用于保存有关ASP.NET标识信息的信息的存储位于ASP.NET标识框架内


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

这个主键很有意义,您不认为吗?避免重复数据是很重要的。我不确定用一个自动增量列替换这个键是不是一个好的做法,除非你的项目有一些特殊的特性,谁能解释这个需要?