我想知道是否有一种经过验证的/真实的方法可以将 .Net 应用程序的数据库调用进度报告给它的用户。我想知道是否甚至可以实际指示完成百分比,或者是最好/唯一的方法来简单地显示“加载”动画以指示正在发生的事情?
另外,SQL2008 是否有人知道这个问题?
我想知道是否有一种经过验证的/真实的方法可以将 .Net 应用程序的数据库调用进度报告给它的用户。我想知道是否甚至可以实际指示完成百分比,或者是最好/唯一的方法来简单地显示“加载”动画以指示正在发生的事情?
另外,SQL2008 是否有人知道这个问题?
您必须确定性地加载内容。例如,如果您知道您将获取大量数据,例如,您可能会执行以下操作:
- 获取所有记录的计数 - 获取 500 条记录 - 报告状态为 500/total % - 再获取 500 条 -report status 为 1000/total % -... 继续直到您获得所有用户拥有的记录取消
这对于根本不需要时间的东西来说是非常浪费的,因为仅仅访问数据库这一事实就是开销的很大一部分。
据我所知,没有办法做到这一点。我的建议是使用永远旋转的圆形进度条之一。Microsoft 在 SQL 和 Project 中的数据库操作中使用这些。
这是一篇关于 CodeProject 的文章,其中包含多种内容:
亚当·贝伦特
您可以使用带有 no wait 选项的 raiserror 将消息发送回远程调用方,而无需结束 sql 事务。当然,这将打破通常的 try/catch 约定,因此建议谨慎。
另一方面,“数据库调用”也可以指恢复或备份操作,在这种情况下,您可以简单地使用 SMO(服务器管理对象)库中的进度事件。
此外,可以使用诸如 Linq 之类的 ORM 解决方案来处理诸如批量更新操作之类的“数据库调用”。如果是这种情况,那么这个答案可能很有用: 如何获得 LINQ to SQL submitchanges 的百分比?