我们有时会在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经验的人可以验证这些建议会有所帮助吗? 任何其他建议,以避免异常将不胜感激。
2013年10月10日更新我们将查询更改为获取,我们看到了一些改进,但我们有时仍会看到错误。
有谁知道缺点将连接字符串更改为 MultipleActiveResultSets = True 可能有什么?
答案 0 :(得分:2)
确保您按照请求创建PetaPoco数据库(不是静态)。
请参阅:how to create a DAL using petapoco
2013年10月10日更新所有Fetch
方法都会调用Query
方法(参见来源)
因此更改另一个对错误无影响。
这些缺点列在MSDN上,并包含警告:
我亲自试过并且没有任何缺点(取决于你的应用程序),但也没有摆脱错误。
你唯一可以做的就是删除错误,按照你的请求代码找到代码中两次调用语句的位置,然后在该函数中使用其他数据库连接。
此外,您可以捕获错误,然后创建一个新的数据库连接并尝试使用新的连接。
对不起,但不是魔术子弹。