【发布时间】:2016-10-29 11:12:23
【问题描述】:
我正在开发一个带有身份验证的应用程序。我正在使用以下框架:
- ASP.NET Core RC2
- 实体框架核心
- Npgsql EFCore 驱动程序
为了播种,我创建了一个DataSeeder 类,它作为瞬态服务添加到ConfigureServices 函数中,然后在配置函数中调用。它会检查IdentityUser 是否存在,如果不存在,它会创建一个名为 admin 的对象并将角色 Admin 添加到其中。
但是,当向用户添加角色时,我收到一个异常,指出违反了外键约束并且 ASP_NET_USERS 不包含具有该 PK 的条目。
我检查了数据库,它确实包含我创建的新角色,但用户表仍然是空的。
这是我的DataSeeder 课程:
public class DataSeeder {
private DatabaseContext _context;
private UserManager<IdentityUser> _userManager;
private RoleManager<IdentityRole> _roleManager;
public DataSeeder(DatabaseContext ctx, UserManager<IdentityUser> userManager, RoleManager<IdentityRole> roleManager) {
_context = ctx;
_userManager = userManager;
_roleManager = roleManager;
}
public async Task CreateUserAsync() {
if (! await _userManager.Users.AnyAsync()) {
var adminRole = new IdentityRole("admin");
var rootRole = new IdentityRole("root");
await _roleManager.CreateAsync(adminRole);
await _roleManager.CreateAsync(rootRole);
var user = new IdentityUser {
Email = "blabla@example.com",
EmailConfirmed = true,
UserName = "superadmin"
};
await _userManager.CreateAsync(user, "P@SSWORD");
await _userManager.AddClaimAsync(user, new Claim("role", "admin"));
}
}
}
所以在AddClaimAsync 处抛出异常。任何帮助将不胜感激
【问题讨论】:
-
我现在看不到,但是 IIRC createAsync 返回一个结果对象,您可以看到为什么它没有被创建。我想这是因为密码复杂或类似的原因。
标签: asp.net-core entity-framework-core