2013-06-12 110 views
0

我有一個名爲AuthorizationCodeFirstRoleProvider類從默認RoleProviderMVC4:在數據庫中添加角色

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的哪裏?以便這些角色在應用程序運行時第一次被添加到數據庫中。

假設這個程序第一次運行,有人點擊註冊按鈕我想有一個提到上述角色的下拉列表。所以,這些角色需要在點擊註冊之前在數據庫中。

一旦角色在數據庫中,我不需要擔心將來訪問這些值。 一種方法是手動將值寫入數據庫,但我不想這樣做,因爲我有這個功能可以使用。

回答

0

如果我做這樣的事情?

[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(); 
     } 

,一旦角色將被添加到數據庫中,我刪除角色不添加這些代碼。

+0

什麼是CodeFirstRoleProvider()? – msysmilu