【问题标题】:Asp.Net Identity Creating role in seed method failedAsp.Net Identity 在种子方法中创建角色失败
【发布时间】:2014-04-23 18:14:31
【问题描述】:

我尝试在种子方法中添加一个新角色,但是当我运行代码时,浏览器一直在加载并且没有响应。使用调试器,发现代码挂在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

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-5 roles asp.net-identity


    【解决方案1】:

    尝试改变

    var rm = new RoleManager<IdentityRole>(
        new RoleStore<IdentityRole>(new ApplicationDbContext()));
    

    使用传递给Seed() 方法的上下文,而不是创建一个新的...

    var rm = new RoleManager<IdentityRole>(
        new RoleStore<IdentityRole>(context));
    

    【讨论】:

      猜你喜欢
      • 2013-11-10
      • 1970-01-01
      • 2013-12-31
      • 2016-03-14
      • 1970-01-01
      • 2021-07-10
      • 2016-07-09
      • 2022-11-23
      • 1970-01-01
      相关资源
      最近更新 更多