我在作为云服务运行的 Windows Azure 应用程序中使用 SQL Azure。大多数情况下,我的数据库操作完全正常(也就是说,在处理了各种超时之后),但是我遇到了一个似乎
using (var connection = new SqlConnection(m_connectionString))
{
m_ConnectionRetryPolicy.ExecuteAction(() => connection.Open());
using (var command = connection.CreateCommand())
{
command.CommandText = "SELECT * FROM X WHERE Y = Z";
var reader = m_CommandRetryPolicy.ExecuteAction(() => command.ExecuteReader());
return LoadData(reader).FirstOrDefault();
}
}
失败的行是 Command.ExecuteReader 与:
ExecuteReader requires an open and available Connection. The connection's current state is closed
我已经考虑过的事情
- 我不是“重用”旧连接或保存连接是成员变量
- 不应该存在并发问题 - 这些方法所属的存储库类在每次需要时创建
有没有其他人经历过这个?我当然可以将其添加到会产生重试的异常列表中,但我对此不太满意