0

Я пытаюсь создать страницу данных в приложении WPF.Пейджинг с DbSet <>. Local

Мой метод обслуживания выглядит следующим образом:

public ObservableCollection<MyModel> GetPageOfModels(int projectId, int numSkip, int numResults) 
{ 
    this.db.Set<MyModel>() 
    .Where(x => x.Project.Id == projectId) 
    .OrderBy(x => x.Name) 
    .Skip(numSkip) 
    .Take(numResults) 
    .Load(); 

    return this.db.Set<MyModel>().Local; 
} 

Это прекрасно работает первый раз, когда он ударил. Но когда я перехожу на другую страницу, Load(): добавляет на следующую страницу, а не заменяет ее.

Если я воссоздал контекст данных перед каждым вызовом до GetPageOfModels, он работает, но мне нужно сохранить тот же контекст данных. Есть ли способ достичь этого?

ответ

1

Если вы должны сохранить контекст, вы можете отсоединить все, прежде чем получать следующую страницу.

foreach(var entity in db.Set<MyModel>().Local.ToList()) 
    db.Entry(entity).State = EntityState.Detached; 
+0

Ха, я просто нашел это сам и собирался опубликовать его в качестве ответа! :) – Cocowalla

Смежные вопросы