实体框架多对多关系查询

时间:2021-03-17 15:47:48

标签: c# sql .net entity-framework

我正在开展一个项目,其中有两个相互关联的模型。书籍和书籍类别。我被困在一个功能上,我想显示某个类别中的所有书籍。 例如,显示“恐怖”类别中的所有书籍。我知道它在带有 .Include() 函数的某个地方,但我遇到了死胡同,需要一些指针来解决这个问题 - 谢谢!

这是我的模型的样子:

模型/book.cs

class Book
{
    [Key]
    public int Id { get; set; }
    public string Title { get; set; }
    public string Author { get; set; }
    public int Price { get; set; }
    public int Amount { get; set; }
    public List<BookCategory> BookCategories { get; set; }
}

模型/BookCategory.cs

class BookCategory
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
    public List<Book> Books { get; set; }
}

我知道到目前为止我可以在书籍中包含该类别

db.Books.Include("BookCategory");

但是我不知道如何匹配条件来告诉我只想获取某个类别的书籍

1 个答案:

答案 0 :(得分:0)

如果你想按类别过滤,你可以这样做:

db.Books
  .Include("BookCategory")
  .Where(b => b.BookCategories.Any(c=>c.Name == "Horror"));

这应该可行,虽然我现在更习惯于实体框架核心。