我无法首先使用EF6代码确定如何将其他用户和角色植入我的MVC5应用程序中。为了从Seed
Configure.cs
调试update-database
方法,因为public ActionResult test() {
var context = new ApplicationDbContext();
var roleStore = new RoleStore<IdentityRole>(context);
var roleManager = new RoleManager<IdentityRole>(roleStore);
roleManager.Create(new IdentityRole { Name = "basic" });
var userStore = new UserStore<ApplicationUser>(context);
var userManager = new UserManager<ApplicationUser>(userStore);
var adminthere = context.Users.Any(n => n.UserName == "Admin");
var basicthere = context.Users.Any(n => n.UserName == "Basic");
// Create Dummy basic account
if (!basicthere) {
var basicUser = new ApplicationUser { UserName = "Basic" };
userManager.Create(basicUser, "test");
var _id = basicUser.Id;
userManager.AddToRole(basicUser.Id, "basic");
}
return View();
}
无效,我写了这个控制器,
userManager.AddToRole(basicUser.Id, "basic");
调试器在Admin
调用时抛出异常,说“找不到UserID”?以下是包含调试会话中变量值的屏幕截图:
问题是什么?此外,完全相同的代码(更改“管理员”的“基本”字样)适用于使用角色“admin”中的{{1}}用户播种数据库。为什么呢?
编辑编辑:移动编辑我在这里发布了以下真实答案。
答案 0 :(得分:0)
如评论所示,我会将此作为答案发布:
代码行userManager.Create(basicUser, "test");
没有成功 - 密码必须至少有6个字符。因此,虽然创建了基本用户ApplicationUser
实例(因此_id
不是null
),但我没有IdentityUser
_id
。在管理员,它先前成功bc。我有一个不同的pwd,我不想在这里发帖......