2016-07-19 16 views
1

私はIdentity 2EF 6を使用しています。ユーザーIDのロールオブジェクトのリスト、またはロールIDのユーザーオブジェクトのリストを取得したいと考えています。ユーザーのロールまたはすべてのロールを取得する

IEnumerable<TRole> GetUserRoles<TRole>(string userId) where TRole : class, IRole<string> 

IEnumerable<TUser> GetRoleUsers<TUser>(string roleId) where TUser : class, IUser<string> 

エンティティフレームワークはそうでもEFを使用すると、トリッキーなようだTUserTRoleの間の関係のためのリンクテーブルを公開するためには表示されません。

SQLを使用して直接データベースにクエリを行うことは効率的に行うための唯一の方法のようです。

誰でもフレームワーク内でこれらのメソッドを実装するソリューションはありますか?

答えて

1

あなたはEntity Frameworkのソリューションをしたい場合は、

public IEnumerable<TRole> GetUserRoles<TRole>(string userId) where TRole : class, IRole<string> 
{ 
    return (from ur in db.Set<IdentityUserRole>() 
      where ur.UserId == userId 
      join r in db.Roles on ur.RoleId equals r.Id 
      select r) as IEnumerable<TRole>; 
} 

public IEnumerable<TUser> GetRoleUsers<TUser>(string roleId) where TUser : class, IUser<string> 
{ 
    return (from ur in db.Set<IdentityUserRole>() 
      where ur.RoleId == roleId 
      join u in db.Users on ur.UserId equals u.Id 
      select u) as IEnumerable<TUser>; 
} 
SQLに似たクエリ式を使用することができます
関連する問題