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

标签 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_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/

相关文章:

entity-framework - 自数据库创建以来,支持 'DataContext' 上下文的模型已更改

c# - 如何解决 C# 中的重复命名空间

c - 查找 EF 上下文的正确名称

c# - 实时显示数据的替代选项

asp.net - 部署在 IIS 6 上的 MVC3 RC 应用程序出现 "403 forbidden"错误

asp.net - 在循环中调用 Webservices 不会执行自定义 OnSuccess 函数

asp.net - URL 解码在 Azure Web 应用程序上不起作用

entity-framework - 使用 LinqPad 和 Entity Framework 插入数据

c# - 在 MVVM 框架的组合框中选择一个项目

c# - MVC 4 - Html.Partial() 显示 DIV 内的 System.Namespace 文本(出现在页面上的 html 中)