Asp.net mvc MVC4:在数据库中添加角色

Asp.net mvc MVC4:在数据库中添加角色,asp.net-mvc,asp.net-mvc-4,roleprovider,Asp.net Mvc,Asp.net Mvc 4,Roleprovider,我有一个名为Authorization的项目,其中包含CodeFirstRoleProvider类,该类继承自默认的RoleProvider public class CodeFirstRoleProvider : RoleProvider { public override void CreateRole(string roleName) { if(string.IsNullOrEmpty(roleName)) return;

我有一个名为
Authorization
的项目,其中包含
CodeFirstRoleProvider
类,该类继承自默认的
RoleProvider

public class CodeFirstRoleProvider : RoleProvider
{
    public override void CreateRole(string roleName)
        {
            if(string.IsNullOrEmpty(roleName)) return;
            using(var context = new SISContext())
            {
                var role = context.Roles.SingleOrDefault(rl => rl.RoleName == roleName);//Roles table exists in database 
                if(role == null)
                {
                    var newRole = new Role
                                      {
                                          RoleId = Guid.NewGuid(),
                                          RoleName = roleName
                                      };
                    context.Roles.Add(newRole);
                    context.SaveChanges();
                }
            }
        }
}
在我的另一个项目
WebPortal
中,我想以下面的方式使用上述方法

var _role = new CodeFirstRoleProvider();
            _role.CreateRole("Admin");
            _role.CreateRole("NonAdmin");
现在,我需要将此代码放置在我的
webportal
中的何处?以便在应用程序运行时第一次将这些角色添加到数据库中

假设这个程序第一次运行,有人点击注册按钮,我想有一个上面提到的角色的下拉列表。所以,在单击register之前,这些角色需要在数据库中

一旦角色在数据库中,我就不必担心将来访问这些值。
一种方法是在数据库中手动写入值,但我不想这样做,因为我有这个函数可以使用。

如果我这样做怎么办

[AllowAnonymous]
        public ActionResult Login(string returnUrl)
        {
            var _role = new CodeFirstRoleProvider();//remove after role is added to database
            _role.CreateRole("Admiin");//remove after role is added to database
            _role.CreateRole("NonAdmin");//remove after role is added to database

            ViewBag.ReturnUrl = returnUrl;
            return View();
        }
一旦角色被添加到数据库中,我就会删除那些进行角色添加的代码。

看看这个。即使您没有使用SimpleRoleProvider,也应该应用相同的主体,因为您首先使用的是代码。

什么是CodeFirstRoleProvider()?