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的截图如下
这里有两个问题想请教
- 为什么它创建了一个自动鉴别器列以及我如何删除它(如果它有任何开销)。
- 为了获得我的授权和 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 子句值与数据库中的值不同
我通过添加外键列扩展了 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的截图如下
这里有两个问题想请教
- 为什么它创建了一个自动鉴别器列以及我如何删除它(如果它有任何开销)。
- 为了获得我的授权和 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 子句值与数据库中的值不同