我希望ObjectContext (Win应用程序)的SaveChanges异步保存更改,是否会显示字幕(或可控?)进度条(这我可以很容易地实现)为用户,而他能够继续工作。
我基本上是想覆盖ObjectContext的SaveChanges。
以前有没有人想过这个问题?
发布于 2009-08-04 14:08:54
编辑于2013-03-12:
由于一些人开始否定这个答案,我猜,出于某种原因,这个解决方案不再是好的。
请不要因为这个而贬低答案。总是以温和的评论开始,说明你为什么不喜欢这个答案。
我相信你需要使用Asynchronous Delegates。它基本上是这样工作的:
通过要调用的方法来创建委托asynchronously;
BeginInvoke,启动调用;发布于 2012-06-04 03:15:03
Entity Framework本身目前不支持异步操作。主要是因为它构建在ADO.NET之上,而这一点也不受支持。默认情况下,ADO.NET甚至不是线程安全的。
您可以使用上面的委托方法或将其包装到Task中。但这将不会使用任何异步调用,即使提供程序支持它。此外,在这个“后台”操作期间,您不应该对ObjectContext做任何事情(查询、添加对象等)。因为可能导致损坏状态。
关于多线程,你可以阅读this的帖子。它是旧的,但想法仍然有效。
编辑2013-04-17:
EF6 (下一版本,目前在编写时处于alpha阶段)将支持异步操作,即您请求的SaveChangesAsync。它还扩展了ADO.NET模型,所以如果提供者本身支持异步执行,那么它将是真正的异步(否则回到以前的行为,因为没有更好的(明智的)方法)。
https://stackoverflow.com/questions/1171677
复制相似问题