【发布时间】:2020-09-04 00:33:03
【问题描述】:
我有 3 张桌子
表 1 = 用户表
表 2 = 员工表
表 3 = userStaff 表
userStaff 表是连接用户表和员工表的联接表。
user Table
id | firstName | password
---------------------------
2 | UserOne | hashed
staff Table
id | firstName | lastName
---------------------------
3 | sally | jones
userStaff Table
userID | staffID
---------------------------
2 | 3
我创建了一个输入用户 ID 的方法,它应该返回与链接到用户 ID 的人员 ID 对应的人员表。在这种情况下,我想插入用户 id 2 并取回员工 id 3 的信息,因此收到返回“id = 3, firstName = Sally, lastName = jones”。
这是我尝试使用的代码
public async Task<UserStaff> GetUserLinkStaff(int id)
{
var staff = await _context.UserStaffs
.FirstOrDefaultAsync(u => u.UserId == id)
.Include(s => s.staffs);
return staff;
}
但是,我收到一条错误消息,上面写着“任务”不包含“包含”的定义,并且找不到接受“任务”类型的第一个参数的可访问扩展方法“包含”(您是否缺少使用指令还是程序集引用?)[Schedular.API]csharp(CS1061)"
我应该使用什么正确的 LINQ 查询?
【问题讨论】:
-
看看类型!
FirstOrDefaultAsync返回一个没有Include扩展方法的Task<UserStaff>。Include是IQueryable<T>的扩展方法。当然,您可以为Task<T>定义一个包含方法,但实现它的运气并不好。Include修改了查询,但您试图在没有意义的查询结果上使用它。
标签: c# linq asp.net-core join entity-framework-core