1

我有一个使用 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 表连接,因此一个 User 可以有多个 Role。外键 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”

如何编写返回用户以及与该用户关联的所有角色的查询?

4

1 回答 1

1

您使用 .Include 扩展方法。

像这样:

return from u in db.Users.Include("Roles")
select u;

您还可以使用 lamba 表达式来避免字符串:

return from u in db.Users.Include(x => x.Roles)
select u;

这告诉实体框架加载所有用户并为用户附加所有相关角色。

于 2013-10-21T14:31:55.787 回答