InvalidOperationException: Cannot create a DbSet for 'Role' because this type is not included in the model for the context

匿名 (未验证) 提交于 2019-12-03 00:46:02

问题:

The following solution works in .net core 1.1, but after upgrading from 1.1 to 2.0, I received the following error:

InvalidOperationException: Cannot create a DbSet for 'Role' because this type is not included in the model for the context.

When the user attempts to log in and the following statement is executed:

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

What is wrong?


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>  

回答1:

Added this and it worked:

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


回答2:

The most common reasons for

Cannot create a DbSet for 'THE-MODEL' because this type is not included in the model for the context

are as follows

  1. The model name does not match with the table name in database
  2. EntityFramework cannot figure out required meta by convention and you have not overriden it.

in your case Role inherits IdentityRoleClaim and that was not configured and default convention required "Id" as key but i suppose it did not have that property so it had to be configured. It would also have worked if you created property in Role like Id => new{UserId,RoleId} which would by convention present Id as the key property to entity framework.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!