在EF6代码优先的种子用户具有自定义角色

时间:2015-03-05 11:48:26

标签: c# entity-framework authentication asp.net-mvc-5

我无法首先使用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”?以下是包含调试会话中变量值的屏幕截图:

enter image description here 问题是什么?此外,完全相同的代码(更改“管理员”的“基本”字样)适用于使用角色“admin”中的{{1}}用户播种数据库。为什么呢?

编辑编辑:移动编辑我在这里发布了以下真实答案。

1 个答案:

答案 0 :(得分:0)

如评论所示,我会将此作为答案发布:

代码行userManager.Create(basicUser, "test");没有成功 - 密码必须至少有6个字符。因此,虽然创建了基本用户ApplicationUser实例(因此_id不是null),但我没有IdentityUser _id。在管理员,它先前成功bc。我有一个不同的pwd,我不想在这里发帖......