web-dev-qa-db-ja.com

AddEntityFrameworkStoresは、.NET Core 2.0のIdentityRoleから派生したロールでのみ呼び出すことができます

プロジェクトを.NET Core 1.1から2.0バージョンに変更しましたが、ストアを追加しようとすると、Identityからエラーが発生します。

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

スローされるエラーは次のとおりです。

AddEntityFrameworkStoresは、IdentityRoleから派生するロールでのみ呼び出すことができます

これらは私のクラスです:

public class ApplicationUser : IdentityUser<long>
{
}

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, IdentityRole<long>, long>        
{
        public ApplicationDbContext(DbContextOptions options) : base(options) { 
        }
}

誰か助けてもらえますか?

12
Felipe Santana

私がこの質問をしてから久しぶりですが、ここに私が今日どのように対処するかがあります:

Startup.cs

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

タイトル:

public class User : IdentityUser<int>
{
}

public class Role : IdentityRole<int>
{
}
0
Felipe Santana

同じ問題については、これを見ることができます: https://github.com/aspnet/Identity/issues/1364

3
Saber.X

まず、これらの2つのクラスを次のように作成します。(カスタムエンティティ)

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)
    {
    }
}
0
RainyTears