【问题标题】:Direct implementation of EF Core many-to-many relationship unable to detect the related table直接实现EF Core多对多关系无法检测到相关表
【发布时间】:2021-04-25 05:29:33
【问题描述】:

我一直在关注 this tutorial 与 EF Core 建立适当的多对多关系。我已经实现了作者所说的直接关系。在这个例子之前一切都很好:

var books = context.Books.Tags.Select(t => t.TagId).ToList()

VS 返回一个错误,指出 DbSet 不包含标签的定义。我不明白是什么原因造成的,因为数据库实现得很好,并且使用 MSSQL 查询它可以按预期工作。例如,我能够做到:

SELECT c.*
FROM Books o
JOIN BookTags ot ON ot.BooksBookId = o.TagId
JOIN Tags c ON ot.TagsTagId = c.TagId
WHERE o.BookId = 1

并获取 ID = 1 的 Book 标签列表。理想情况下,我希望使用 EF Core 获得相同的结果,但我真的不明白这里出了什么问题。非常感谢任何帮助。

【问题讨论】:

    标签: sql entity-framework linq entity-framework-core


    【解决方案1】:

    您不能像那样加载导航属性。要加载具有导航属性的书籍,请使用:

    var books = context.Books.Include(b => b.Tags).ToList();
    

    要仅获取 id,您可以使用:

    var tagIds = context.Books.SelectMany(b => b.Tags).Select(t => t.TagId).ToList();
    

    【讨论】:

      猜你喜欢
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      • 2021-04-07
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      相关资源
      最近更新 更多