0

我正在尝试对 WPF 应用程序中的数据集进行分页。

我的服务方法如下所示:

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它之前重新创建数据上下文,但我需要保持相同的数据上下文。有什么办法可以做到这一点?

4

1 回答 1

1

如果您必须保留上下文,那么您可以在获取下一页之前分离所有内容。

foreach(var entity in db.Set<MyModel>().Local.ToList())
   db.Entry(entity).State = EntityState.Detached;
于 2013-08-02T12:12:56.040 回答