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()?