2

我正在使用 EF Core 2.2 版。我有三张桌子:

  1. 用户:用户 ID、名字、姓氏
  2. :书名、书名
  3. UserBook : UserId, BookId <--联接表,用于用户和书之间的多对多关系

我想获取与特定 UserId 关联的书籍列表。

我试过了:

var books = await _context.Books
                .Include(ub => ub.UserBooks.Where(f => f.UserId == id))
                .ToListAsync();

但唉,它不起作用。我收到错误消息:包含属性 lambda 表达式 'ub => {from UserBook in ub.UserBooks where ([f].UserId == __id_0) select [f]}' 无效。

如何获取与特定 UserId 关联的图书列表?谢谢

4

1 回答 1

3

您需要从 where 过滤器中取出Include- 包含用于急切加载,而不是过滤

查找与给定用户关联的所有书籍的查询:

var books = await _context.Books
            .Include(b => b.UserBooks)
            .Where(b => b.UserBooks.Any(ub => ub.UserId == id))
            .ToListAsync();
于 2019-03-10T06:53:11.523 回答