如何将Roles插入到预生成的ASP.NET数据库中

时间:2017-02-27 19:08:49

标签: asp.net-mvc visual-studio roles

我正在开发一个使用ASP.NET MVC和Visual Studio 2015的项目。我们正在使用Visual Studio附带的预生成数据库(我添加了其他表,但这不应该与这个。)我正在创建一个我希望定义为" Expert"的角色的注册页面。我需要AspNetRole表才能在其中使用此角色。如果我直接输入并直接输入数据库,我的其他项目成员就不会获得此信息。我已经找到了这个,但我得到的是如何为管理员创建一个字面上创建新角色的页面。我不要那个。我理解如何将用户设置为角色,但我需要首先在我的数据库中创建该角色。这是我的startup.cs文件中的内容吗?我确定如何或在何处这样做。任何其他信息也会有所帮助,因为我不熟悉角色。谢谢。

2 个答案:

答案 0 :(得分:0)

我在类似情况下所做的是检查表中是否存在角色,如果没有,则添加:

var context = new DatabaseContext();
if(!context.AspNetRoles.any(x=>x.role.equals("roleName"))){context.AspNetRoles.Add(new AspNetRoles{Role="roleName"}); context.SaveChanges();}
//Follow the normal process, in that case now is created

答案 1 :(得分:0)

您可以在startup.cs

中使用此功能
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;

public void Configuration(IAppBuilder app)
{
    ConfigureAuth(app);
    CreateRoles();
}


private void CreateRoles()
{
    ApplicationDbContext _context = new ApplicationDbContext();

    var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(_context));

    // creating Creating Expertrole   
    if (!roleManager.RoleExists("Expert"))
    {
        var role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole();
        role.Name = "Expert";
        roleManager.Create(role);

    }
}