【发布时间】:2020-11-02 15:00:41
【问题描述】:
我有多个类(A、B 和 C),每个类都扩展了 IdentityUser<Guid>。我还有一个名为UserRole 的类,它扩展了IdentityRole<Guid>。
以下是我的DbContext:
public sealed class EntityDbContext: DbContext
{
public DbSet<A> As { get; set; }
public DbSet<B> Bs { get; set; }
public DbSet<C> Cs { get; set; }
}
我给IServiceCollection添加了身份:
services
.AddIdentityCore<A>()
.AddEntityFrameworkStores<EntityDbContext>()
.AddRoles<UserRole>()
.AddUserStore<AUserStore>()
// .AddRoleStore<TRoleStore>()
.AddDefaultTokenProviders();
// Same for B, C
我还有以下店铺:
public class AUserStore : UserStore<A, UserRole, EntityDbContext, Guid> { }
public class BUserStore : UserStore<B, UserRole, EntityDbContext, Guid> { }
public class CUserStore : UserStore<C, UserRole, EntityDbContext, Guid> { }
以下是我得到的错误:
指定的参数超出了有效值的范围。 (范围 ReturnType AUserStore 的“实例”AUserStore 无法转换为 IUserStore')
我不知道我正在做的事情是否可行。感谢您的任何帮助或提示。
更新
我想我成功了:
class GenericUserRoleStore : RoleStore<UserRole, EntityDbContext, Guid> { }
services.AddIdentity<A, UserRole>()
.AddDefaultTokenProviders()
.AddUserStore<AUserStore>()
.AddRoleStore<GenericUserRoleStore>();
services.AddIdentityCore<B>()
.AddRoles<UserRole>()
.AddDefaultTokenProviders()
.AddUserStore<BUserStore>()
.AddRoleStore<GenericUserRoleStore>();
services.AddIdentityCore<C>()
.AddRoles<UserRole>()
.AddDefaultTokenProviders()
.AddUserStore<CUserStore>()
.AddRoleStore<GenericUserRoleStore>();
【问题讨论】:
-
这个问题也询问了多个用户,以防它可能对你有帮助stackoverflow.com/questions/49073374/…这个问题是关于铸造的,这类似于你的错误stackoverflow.com/questions/19929050/…
标签: .net-core asp.net-identity