【发布时间】:2013-04-26 19:21:39
【问题描述】:
我们有时会在 ASP.NET MVC 4 应用程序中收到来自 PetaPoco 的以下数据库连接错误:
There is already an open DataReader associated with this Command which must be closed first.;
System.Data; at System.Data.SqlClient.SqlInternalConnectionTds.ValidateConnectionForExecute(SqlCommand command)...
随着系统负载的增加,似乎会发生这种情况。
我们在研究过程中发现的一些建议是:
- 执行 PetaPoco 获取而不是查询
- 将 MultipleActiveResultSets=True 添加到我们的连接字符串
有 PetaPoco 经验的人能否验证这些建议是否有帮助? 任何其他避免异常的建议将不胜感激。
2013 年 6 月 10 日更新我们将 Query 更改为 Fetch,我们看到了一些改进,但有时我们仍然会看到错误。
有谁知道将连接字符串更改为 MultipleActiveResultSets=True 可能会有什么缺点?
【问题讨论】:
-
你是如何解决这个问题的?这也发生在我身上。我正在使用带有 PerWebRequest 生活方式的 Castle Windsor(我认为它类似于 Structuremap HttpContextScoped)
-
我们尝试将 Query 更改为 Fetch 并取得了一些不错的结果,但有时仍会发现问题。你呢?
标签: sql-server-2008 asp.net-mvc-4 database-connection petapoco