首页 > 解决方案 > 实体框架多对多关系查询

问题描述

我正在做一个项目,我有两个彼此相关的模型。书籍和书籍类别。我被困在一个功能上,我想显示某个类别的所有书籍。就像,显示“恐怖”类别中的所有书籍。我知道它在带有 .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");

但我不知道如何匹配标准来告诉我只想获得某个类别的书籍

标签: c#sql.netentity-framework

解决方案


如果要按类别过滤,可以执行以下操作:

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

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


推荐阅读