我和我的团队正在开发一个访问“庞大”数据库的应用程序,在8个月内大约有32M行。该应用程序是RIA域服务应用程序。我们已经优化了应用程序和数据库设计,即使在资源非常有限的盒子上,响应时间也不会超过几秒钟。
但是,某些任务需要在大型记录集上执行(每个操作至少2-3M记录)。一个例子是生成月度报告。当然,我们无法让应用程序等待结果,因为它会达到30秒超时。
在阅读了这个post之后,我想我可以创建一个[Invoke]方法,它会生成一个新线程,因此它会释放客户端。该线程将负责从数据库中提取数据并将其很好地写入PDF。我试图实现这种情况,但是我得到一个异常,它说底层连接已经被处理掉......
这种做法是否正确?我可以实现我想要做的事情,还是有一些我无法克服的问题?还有更好的方法吗?
干杯, 詹卢卡。
答案 0 :(得分:0)
好的,我意识到我的问题有点傻。
据我所知,只要客户端连接,ObjectContext就会存在,否则会被处理掉。因为我正在编写一个不需要任何更改跟踪的Invoke方法,所以我解决了: - 从Invoke方法中生成一个新线程 - 在工作线程中实例化新的EF上下文 - 一旦单独的线程操作终止,就立即处理新的EF上下文。
干杯, 詹卢卡。