我试图在 seed 方法中添加一个新角色,但是当我运行代码时,浏览器一直在加载并且没有任何响应。使用调试器,发现代码卡在了create方法上。
我不知道发生了什么。感谢任何帮助。
谢谢!
public class ApplicationDbContextInitializer : DropCreateDatabaseIfModelChanges<ApplicationDbContext>
{
protected override void Seed(ApplicationDbContext context)
{
var rm = new RoleManager<IdentityRole>(
new RoleStore<IdentityRole>(new ApplicationDbContext()));
var idResult = rm.Create(new IdentityRole("Admin"));
base.Seed(context);
}
}
Global.asax 文件:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
Database.SetInitializer(new ApplicationDbContextInitializer());
ApplicationDbContext db = new ApplicationDbContext();
db.Users.FirstOrDefault();
}
}
在这篇文章之后,播种数据可以很好地迁移。但我想找到一个不使用迁移的解决方案,这样每次模型更改时它都会删除并创建一个新数据库。 http://typecastexception.com/post/2013/11/11/Extending-Identity-Accounts-and-Implementing-Role-Based-Authentication-in-ASPNET-MVC-5.aspx
最佳答案
尝试改变
var rm = new RoleManager<IdentityRole>(
new RoleStore<IdentityRole>(new ApplicationDbContext()));
使用传递给 Seed()
方法的上下文,而不是创建一个新的...
var rm = new RoleManager<IdentityRole>(
new RoleStore<IdentityRole>(context));
关于c# - Asp.Net Identity 在种子方法中创建角色失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22473032/