ロール内のすべてのユーザーのリストを取得する方法は? 以前は Roles.GetUsersInRole で可能でしたが、新しい ID ではこのようなものを見つけることができません。
27263 次
7 に答える
11
何らかの理由で、@ChoptimusPrime によって上記で提案された非常に優れたクエリが、ASP.NET Identity 2.2.1 でコンパイルされませんでした。私は拡張機能を書きました:
public static IQueryable<User> GetUsersInRole(DbContext db, string roleName)
{
if (db != null && roleName != null)
{
var roles = db.Roles.Where(r => r.Name == roleName);
if (roles.Any())
{
var roleId = roles.First().Id;
return from user in db.Users
where user.Roles.Any(r => r.RoleId == roleId)
select user;
}
}
return null;
}
于 2016-01-26T13:50:40.590 に答える
0
これは新しいものMVC 5 ASP.NET Identity
です:
var managerRole = TMRoles.GetIdentityRole(TMRoles.Manager);
var managers = managerRole.Users;
public class TMRoles
{
private static RoleManager<IdentityRole> RoleManager =
new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new TMContext()));
public static string Manager { get { return "Manager"; } }
public static IdentityRole GetIdentityRole(string roleName)
{
return RoleManager.FindByName(roleName);
}
}
于 2014-06-17T02:45:50.730 に答える
0
Entity Framework を使用できますが、Asp.Net Identity 1.0 ではまだ使用できません。Identity 2.0 のリリースを待つ必要があります。
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings("DefaultConnection").ConnectionString)) {
string queryString = "SELECT AspNetUsers.UserName FROM dbo.AspNetUsers INNER JOIN dbo.AspNetUserRoles ON " + "AspNetUsers.Id=AspNetUserRoles.UserId WHERE AspNetUserRoles.RoleID='" + id + "'";
SqlCommand command = new SqlCommand(queryString, connection);
command.Connection.Open();
List<string> @out = null;
dynamic reader = command.ExecuteReader();
while (reader.Read()) {
if (@out == null) @out = new List<string>();
@out.Add(reader.GetString(0));
}
return @out;
}
于 2014-02-25T18:57:55.130 に答える