カスタム ロール プロバイダーの作成に使用しました。
私のプロジェクト - asp.net MVC3、Entity Framework 4
GetRolesForUser メソッドに問題があります。
カスタム RoleProvider - GetRolesForUser メソッド
// The user to return a list of roles for.
public override string[] GetRolesForUser(string userAccount)
{
var userId = userRepository.GetUser(userAccount).UserId;
var roleIds = from ur in usersInRoleRepository.UsersInRoles
where ur.UserId == userId
select ur.RoleId;
var roleNames = from r in roleRepository.Roles
where roleIds.Contains(r.RoleId)
select r.RoleName;
if (roleNames != null)
{
**return roleNames.ToArray(); // here Error**
}
else
{
return new string[0];
}
}
エラー メッセージ : 指定された LINQ 式には、異なるコンテキストに関連付けられているクエリへの参照が含まれています。
このコードに問題があるかどうかはわかりません。
助けてください。
ユーザーエンティティ
public class User
{
public Guid UserId { get; set; }
public string UserAccount { get; set; }
public string Password { get; set; }
public string UserEmail { get; set; }
public DateTime JoinDate { get; set; }
public DateTime LoginDate { get; set; }
}
ロール エンティティ
public class Role
{
public Guid RoleId { get; set; }
public string RoleName { get; set; }
public DateTime CreateDate { get; set; }
}
UsersInRole エンティティ
public class UsersInRole
{
public Guid UserId { get; set; }
public Guid RoleId { get; set; }
public DateTime SetDate { get; set; }
}