我有简单的POCO课程:
public class Library
{
[Key]
public string LibraryId { get; set; }
public string Name { get; set; }
public List<Book> Books { get; set; }
}
public class Book
{
[Key]
public string BookId { get; set; }
public string Name { get; set; }
public string Text { get; set; }
}
我有查询,它返回已包含书籍的库:
dbContext.Set<Library>.Include(x => x.Books);
我试图跳过5个图书馆,然后选择10个图书馆:
await dbContext.Set<Library>.Include(x => x.Books).Skip(5).Take(10).ToListAsync();
问题是,当我尝试在此查询中执行Skip
和Take
方法时,它会返回没有包含书籍列表的库。
如何保存以前包含的实体,Skip
和Take
?
答案 0 :(得分:1)
通常,在使用Skip
和Take
方法之前,您需要先排序。尝试按照这种方式按名称排序:
await dbContext.Set<Library>().Include(x => x.Books)
.OrderBy(x=>x.Name)
.Skip(5)
.Take(10)
.ToListAsync();
据我所知,您的查询应使用OFFSET-FETCH
过滤器进行翻译,该过滤器需要ORDER BY
子句存在。