C# UserManager引发有关IdentityRoleId的异常

C# UserManager引发有关IdentityRoleId的异常,c#,asp.net,entity-framework,asp.net-mvc-5,asp.net-identity,C#,Asp.net,Entity Framework,Asp.net Mvc 5,Asp.net Identity,我有一个MVC5项目,带有个人帐户身份验证和两个简单的捕获屏幕 一切正常,直到我决定授予用户注册角色,所以在Register的post操作中,在UserManager.CreateAsync之后,如果成功,我添加了: UserManager.AddToRoleAsync(user.Id, IdentityData.RoleNames.GeneralAdmin); 然后它抛出了SqlException:无效的列名'IdentityRoleId' 现在,在我尝试授予角色之前,每当我使用UserM

我有一个MVC5项目,带有个人帐户身份验证和两个简单的捕获屏幕

一切正常,直到我决定授予用户注册角色,所以在
Register
的post操作中,在
UserManager.CreateAsync
之后,如果成功,我添加了:

 UserManager.AddToRoleAsync(user.Id, IdentityData.RoleNames.GeneralAdmin);
然后它抛出了
SqlException:无效的列名'IdentityRoleId'

现在,在我尝试授予角色之前,每当我使用
UserManager
,甚至
UserManager.CreateAsync
,它都会抛出此异常。字符串
IdentityRoleId
不会出现在项目中的任何位置,正是Identity使用列名
RoleId
创建了自己的表

我必须补充一点,当我开始这个项目时,我有两个
DbContext
类,一个是我的业务实体,另一个是自动生成的
ApplicationDbContext
,它将身份模型深深隐藏在某处。然而,即使在反编译这个上下文时,我在
IdentityUserRoles
中也只看到
RoleId

探查器跟踪显示了这个查询,我不知道它在我的代码中的任何地方。我希望在加载用户并加载该用户的角色时会发生这种情况:

exec sp_executesql N'SELECT 
    1 AS [C1], 
    [Extent1].[RoleId] AS [RoleId], 
    [Extent1].[UserId] AS [UserId], 
    [Extent1].[IdentityRoleId] AS [IdentityRoleId]
    FROM [dbo].[IdentityUserRoles] AS [Extent1]
    WHERE [Extent1].[UserId] = @p__linq__0',N'@p__linq__0 nvarchar(4000)',@p__linq__0=N'd299ba29-5266-40a2-b6cd-404588926a5b'

这个幻影
IdentityRoleId
来自哪里?我应该去哪里寻找,或者我应该做些什么来追踪这一点。可能是Microsoft.AspNet.Identity.EntityFramework坏了,或者EF坏了,但是在我今天早上做的一个更改之前,一切都正常,现在已经完全删除了。

看起来你的
应用程序角色
模型很混乱,EF在那里添加了额外的字段。您能否显示
ApplicationDbContext
配置和所有与身份相关的类?另外,如果您有与身份相关的EF迁移,您可以显示它吗?我以前有过这个问题,问题是继承的字段和DbContext配置。我只是通过迁移添加了备用列。现在它总是有值
null
,其他一切都正常工作。现在为我工作,但如果再次发生,我会重新考虑你的答案。谢谢。@trailmax、
IdentityUserRoles和所有相关的
Identity`实体被烘焙到Identity库asemblies中,而不是在我的代码中的任何地方声明。我认为这可能与该案例代码生成中的一个小故障有关。这种事再也没有发生过。