以下解决方案适用于.Net Core 1.1,但从1.1升级到2.0后,我收到以下错误:

InvalidOperationException:无法为"角色"创建数据库集,因为上下文的模型中不包含此类型.

当用户try 登录并执行以下语句时:

var result = await _signInManager.PasswordSignInAsync(model.Email, 
                                model.Password, model.RememberMe, lockoutOnFailure: false);

怎么了?


User.cs

public partial class User : IdentityUser<Guid>
{
    public string Name { get; set; }
}

IdentityEntities.cs

public partial class UserLogin : IdentityUserLogin<Guid>
{
}
public partial class UserRole : IdentityUserRole<Guid>
{
}
public partial class UserClaim : IdentityUserClaim<Guid>
{
}
public partial class Role : IdentityRole<Guid>
{
    public Role() : base()
    { 
    }

    public Role(string roleName)
    {
        Name = roleName;
    }
}
public partial class RoleClaim : IdentityRoleClaim<Guid>
{
}
public partial class UserToken : IdentityUserToken<Guid>
{
}

ConfigureServices

services.AddIdentity<User, Role> 

推荐答案

添加了这个,它起作用了:

builder.Entity<IdentityUserRole<Guid>>().HasKey(p => new { p.UserId, p.RoleId });

Asp.net相关问答推荐

如何在 asp.net 服务器中使用字体

.Net Framework:w3wp.exe 中的异常

创建项目 ASP.NET Core (.NET Core) 和 ASP.NET Core (.NET Framework) 有什么区别

如何在 Javascript 中获取 C# 枚举

使 ASP.NET WCF 将字典转换为 JSON,省略键和值标签

ASP.NET GridView 第二个标题行跨越主标题行

如何使用 javascript 获取 MVC 应用程序的基本 URL

返回 JSON 对象 (ASP.NET WebAPI)

用于 ASP.NET 的 System.Drawing 的替代品?

Devexpress 或 Telerik Controls 比较

没有回发的按钮?

HTTP 错误 503.该服务在简单的 ASP.NET 4.0 网站下不可用

如何在 ASP.NET 页面中以编程方式生成 401 错误

您如何在 .net WebApi2 应用程序中的 OAuth2 令牌请求中使用额外参数

C# 7 本地函数未按预期工作且未显示错误

回发不适用于 aspx 页面作为默认文档

VS2017 无法加载文件或程序集 Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 或其依赖项之一

如何在我自己的方法中模仿 string.Format()?

删除 HTML 或 ASPX 扩展

DataTable 不包含 AsEnumerable 的定义