2013-01-09 93 views
5

我正在使用會員提供商asp.net mvc 4. 我想獲取用戶及其角色的列表,而不需要Roles.GetRolesForUser()爲每個用戶。獲取用戶及其角色列表

在我的應用程序中,業務需求規定用戶只能分配一個角色。

目前我在做什麼:

[GridAction] 
    public ActionResult _GetUsers() 
    { 
     var users = Membership.GetAllUsers().Cast<MembershipUser>().Select(n => new AdminAccountEditModel 
     { 
      Role = Roles.GetRolesForUser(n.UserName).FirstOrDefault(), 
      IsApproved = n.IsApproved, 
      Email = n.Email, 
      UserName = n.UserName 
     }).ToList(); 

     return View(new GridModel(users)); 
    } 

非常低效的。我該如何解決?

謝謝。

回答

0

我剛結束了使用EF和LINQ來獲得結果。

[GridAction] 
    public ActionResult _GetUsers() 
    { 

     var users = from user in xcsnEntities.Users 
        select new 
        { 
         Role = user.Roles.FirstOrDefault().RoleName, 
         IsApproved = user.Membership.IsApproved, 
         Email = user.Membership.Email, 
         UserName = user.UserName 
        }; 

     return View(new GridModel(users)); 
    } 
1

在過去,我在使用標準成員資格提供程序時有點欺騙,並且直接針對sql中的表編寫了很多複雜的查詢。你要找的是一個簡單的連接。