我曾经创建一个自定义角色提供者。
我的项目 - asp.net MVC3,实体框架 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; }
}