EF Core OrderBy 其他 Table 上的引用计数
EF Core OrderBy Count of References on other Table
我有一个 table 作者和一个 table 书籍。
public class Author
{
public int ID { get; set; }
public string Name { get; set; }
}
public class Book
{
public int ID { get; set; }
public string Name { get; set; }
public Author Author { get; set; }
}
我想按我的作者拥有的书籍数量排序。
我需要通过 _context.Authors.XXX
访问数据,因为我在 IQueryable
.
上应用了额外的过滤
我正在使用 net5.0 和 ef core 5.0。
有'elegant'方法吗?
谢谢!
您需要更新您的作者和图书 class。
作者 class 需要包含一个导航“书籍”属性,它将保存作者的书籍列表,而书籍 class 将保存一个 AuthorId 属性,它将作为作者 table.
的外键
public class Book
{
public int ID { get; set; }
public string Name { get; set; }
public string AuthorID {get; set; }
public virtual Author Author { get; set; }
}
public class Author
{
public Author() {
this.Books = new List<Book>();
}
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Book> Books { get; set; }
}
添加一个 Books
导航 属性 并相应地映射,名称如下:
public ICollection<Book> Books { get; set; }
然后在您的查询中:
_context.Authors.OrderByDescending(x => x.Books.Count());
我有一个 table 作者和一个 table 书籍。
public class Author
{
public int ID { get; set; }
public string Name { get; set; }
}
public class Book
{
public int ID { get; set; }
public string Name { get; set; }
public Author Author { get; set; }
}
我想按我的作者拥有的书籍数量排序。
我需要通过 _context.Authors.XXX
访问数据,因为我在 IQueryable
.
我正在使用 net5.0 和 ef core 5.0。
有'elegant'方法吗?
谢谢!
您需要更新您的作者和图书 class。 作者 class 需要包含一个导航“书籍”属性,它将保存作者的书籍列表,而书籍 class 将保存一个 AuthorId 属性,它将作为作者 table.
的外键public class Book
{
public int ID { get; set; }
public string Name { get; set; }
public string AuthorID {get; set; }
public virtual Author Author { get; set; }
}
public class Author
{
public Author() {
this.Books = new List<Book>();
}
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Book> Books { get; set; }
}
添加一个 Books
导航 属性 并相应地映射,名称如下:
public ICollection<Book> Books { get; set; }
然后在您的查询中:
_context.Authors.OrderByDescending(x => x.Books.Count());