实体框架传输数据时显示进度条

meh*_*tfi 5 c# wpf multithreading entity-framework

我有一个项目,使用的数据 Entity Framework并将其呈现在中WPF。我想在实体框架在表示层上加载/保存数据时显示线程进度条。

您能帮我了解我该怎么做吗?

Clo*_*ble 5

我发现这个简洁的例子Skip可以使用/方法来做到这一点Take。基本上,您每轮加载 x 数量的记录,然后Skip在下一轮加载,并根据表中所有数据的数量计算此数量,这使您能够每轮更新进度条。

看看这个:

List<MyDataTable> someData = new List<MyDataTable>();
int rowCount = dt.myDataTable.Count();

//TODO: <= display a progress bar here, and set max to rowCount...

int currentRows = 0;
while (currentRows < rowCount)
{
  someData.AddRange(dt.myDataTable.Skip(currentRows).Take(10000).ToList());
  currentRows = someData.Count;

  //TODO: <= update progress here...

}
Run Code Online (Sandbox Code Playgroud)

  • 这似乎是唯一的选择,但根据记录,跳过效率低下(sql 数据库无法查找行计数)。实体框架确实应该对此提供支持。大量出口需要这个。 (4认同)

Jig*_*dya 1

您可以使用 Dispatcher Thread 来实现这一点;基本上,您需要创建一个在其他 UI 类中扩展的公共类。

要实现这一点,您可以在此处查看基本示例此处提供了更精确的示例和可下载代码。