跳過並接受實體框架核心

c# entity-framework entity-framework-core

我有簡單的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();

問題是,當我嘗試在此查詢上執行SkipTake方法時,它會返回沒有包含書籍列表的庫。

如何保存以前包含的實體,我如何使用Skip and Take

熱門答案

通常在使用SkipTake方法之前需要先按順序Skip 。嘗試按這樣的方式按名稱排序:

await dbContext.Set<Library>().Include(x => x.Books)
                              .OrderBy(x=>x.Name)
                              .Skip(5)
                              .Take(10)
                              .ToListAsync();

據我所知,您的查詢應使用OFFSET-FETCH過濾器進行轉換,該過濾器需要存在ORDER BY子句。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow