我使用Entity Framework在.NET 4.5中编写了一个API。以下是其中一种方法:
private myEntities db = new myEntities();
// GET api/User
public IEnumerable<User> GetUsers()
{
return from u in db.Users
select u;
}
非常简单。此表可以与Roles表连接,因此用户可以拥有多个角色。外键UserId位于Roles表中。这就是我想要做的事情:
private myEntities db = new myEntities();
// GET api/User
public IEnumerable<User> GetUsers()
{
return from u in db.Users
join r in db.Roles on u.UserId equals r.UserId
select new User
{
UserId = u.UserId,
Roles = u.Roles
};
}
这会抛出错误:无法在LINQ to Entities查询中构造实体或复杂类型“ppadModel.User”
如何编写返回用户的查询以及与该用户关联的所有角色?
答案 0 :(得分:0)
您使用.Include扩展方法。
像这样:
return from u in db.Users.Include("Roles")
select u;
您也可以使用lamba表达式来避免字符串:
return from u in db.Users.Include(x => x.Roles)
select u;
这告诉实体框架为用户加载所有用户和其他所有相关角色。