请帮帮我。如何删除该错误?
这里有两个课程:
public class Users
{
public int UserId { get; set; }
public int RoleId { get; set; }
public String Username { get; set; }
public virtual ICollection<Role> Roles { get; set; }
}
public class Role
{
public int RoleId { get; set; }
public string RoleName { get; set; }
public virtual ICollection<Users> Users { get; set; }
}
在这里,我为寻找结果编写了简单的Linq查询
enum TypeofEmp{
Admin=100,
HttpRequest=101,
Devoloper=102
};
public Users GetUsers(string Uname, string psw)
{
var x = (from n in db.Users
where n.Username == Uname && n.Password == psw
select n).FirstOrDefault();
if(x!=null){
ICollection<Role> role = new List<Role>();
int RoleId = x.RoleId;
var RoleNmae = Enum.GetName(typeof(TypeofEmp), RoleId);
Role dd = new Role(); dd.RoleId = RoleId; dd.RoleName = RoleNmae;
Users users = new Users();
users.Roles = role;
}
return x;
我在这里得到错误
'x.Roles'抛出了类型异常 'System.Data.Entity.Core.EntityCommandExecutionException'
答案 0 :(得分:0)
您正在尝试访问Roles
属性,但这不存在。您只有foreach ( var role in x.Roles )
{
//do something with role.RoleId
}
属性,该属性包含角色列表(表示一个用户可能分配了多个角色)。
Users
作为提示,我会重命名User
类o Users
,因为现在它很混乱,因为您将单个用户称为dd
。
此外,在您使用角色实例创建{{1}}变量的代码中,但您没有在任何地方使用它。我不确定这是你想要的。