AddEntityFrameworkStores 只能使用派生自 .NET Core 2.0 中的 IdentityRole 的角色调用

Posted

技术标签:

【中文标题】AddEntityFrameworkStores 只能使用派生自 .NET Core 2.0 中的 IdentityRole 的角色调用【英文标题】:AddEntityFrameworkStores can only be called with a role that derives from IdentityRole in .NET Core 2.0 【发布时间】:2017-08-16 20:50:06 【问题描述】:

我已将一个项目从 .NET Core 1.1 更改为 2.0 版本,但是当它尝试添加商店时,我从 Identity 收到错误:

services.AddIdentity<ApplicationUser, IdentityRole<long>>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();

抛出的错误是:

AddEntityFrameworkStores 只能使用派生的角色调用 来自身份角色

这些是我的课程:

public class ApplicationUser : IdentityUser<long>



public class ApplicationDbContext : IdentityDbContext<ApplicationUser, IdentityRole<long>, long>        

        public ApplicationDbContext(DbContextOptions options) : base(options)  
        

有人可以帮助我吗?

【问题讨论】:

您找到解决方案了吗? 同样的问题,你找到解决办法了吗? 【参考方案1】:

我很久没有问这个问题了,但现在我是这样处理的:

Startup.cs

services.AddIdentity<User, Role>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddScoped<RoleManager<Role>>();

实体:

public class User : IdentityUser<int>



public class Role : IdentityRole<int>


【讨论】:

【参考方案2】:

同样的问题,你可以看看这个:https://github.com/aspnet/Identity/issues/1364

【讨论】:

非常混乱的链接...转向如此多的切线...除非我将下一小时的生产开发投入到涉水其中,否则我无法分辨哪个是相似的【参考方案3】:

首先,按如下方式创建这两个类:(自定义实体)

public class AppUser : IdentityUser<long>




public class AppRole : IdentityRole<long>

    public AppRole() : base()
    

    

    public AppRole(string roleName)
    
        Name = roleName;
    

然后将ConfigureServices函数改成Startup.cs文件:

services.AddIdentity<AppUser, AppRole>()
    .AddEntityFrameworkStores<MyDbContext>()
    .AddDefaultTokenProviders();

最后,创建 db 类:

public class MyDbContext : IdentityDbContext<AppUser,AppRole,long>

    public MyDbContext(DbContextOptions<MyDbContext> options)
       : base(options)
    
    

【讨论】:

以上是关于AddEntityFrameworkStores 只能使用派生自 .NET Core 2.0 中的 IdentityRole 的角色调用的主要内容,如果未能解决你的问题,请参考以下文章