UserManager.GetRoles 在 MVC 5 Dot Net Identity 中扩展 IdentityUserRole 后不起作用

UserManager.GetRoles doesn't work after extending the IdentityUserRole in MVC 5 Dot Net Identity

我通过添加外键列扩展了 IdentityUserRole,现在我无法授权或检索角色信息。可以请任何人帮助我解决这个问题。

我的 IdentityUserRole 有一个来自 AspNetApplications table 的外键列,IdentityUserRole 扩展如下

public class AspNetUserRoles : IdentityUserRole
{
    [Key]
    public string ApplicationId { get; set; }

    [ForeignKey("ApplicationId")]
    public AspNetApplications AspNetApplications { get; set; }
}

添加迁移后,我可以看到在 AspNetUserRoles table 中创建了外键列。 table的截图如下

这里有两个问题想请教

  1. 为什么它创建了一个自动鉴别器列以及我如何删除它(如果它有任何开销)。
  2. 为了获得我的授权和 UserManager.GetRoles 像执行此扩展之前一样工作,我还需要做些什么。

每个层次结构 (TPH) 的鉴别器列约为 Table。请参阅此 link

关于您的身份验证您的鉴别器 column.for 应该有问题,例如此代码 UserManager.GetRoles() 具有用于鉴别器的 where 子句以获取数据。

SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Roles] AS [Extent1]
WHERE [Extent1].[Discriminator] = N'Role'

我认为发送到数据库的 select 命令中的 where 子句值与数据库中的值不同