在qa中使用一些后,我们得到以下错误
Execution of the command requires an open and available connection. The connection's current state is broken.
我们使用EntityFramework的单例实例
SOF建议:
1)偶尔创建一个新的ContectObject实例
2)将池连接数配置为更高
解决此问题的最佳做法是什么?
我认为为每个Dal操作创建一个新的contectObject很浪费
您对此有任何证据吗?我相信,实体框架和最确实的数据访问框架被 设计 为大量的短期和独立的上下文。在这里实现您自己的池化/缓存通常是一种反模式,可能会导致过时的结果,并发问题以及较差的故障恢复能力(在这里就是这种情况)。
您认为哪些 特定 资源会被浪费,并且您是否通过实验进行了验证?
基本上,我建议为每个工作单元创建一个新的上下文(可能大致对应于一个请求)-衡量任何性能差异,并查看问题是否消失(正如我期望的那样)。作为测试的一部分,偶尔断开数据库服务器与网络的连接,以检查您是否也可以真正恢复…