我正在使用Dapper查询并从表中获取ID值列表:
Dim systemIDs As IEnumerable(Of Long) = Nothing
Dim connString As String = GetMyConnectionString()
Using connection As New SqlConnection(connString)
systemIDs = connection.Query(Of Long)("SELECT systemIDs FROM dbo.mySystems").ToList()
End Using
Query()调用发出错误:
“连接超时已过期。尝试使用登录前握手确认时超时时间已过。这可能是因为登录前握手失败或服务器无法及时响应。连接到此服务器是 - [预登录]初始化= 6;握手= 629;“
我用谷歌搜索了这个错误但是没有找到与Dapper有关的事情。有任何想法吗?我认为我正在进行查询的方式是正确的,但我错过了什么吗?
注意,当这个错误发生时,如果我恢复,那么它似乎重试并连接正常。我只注意到这个错误,因为我在调试时打破了异常。它只发生在第一个数据库连接上,对.Query()的所有其他后续调用都没有执行异常。我想知道Dapper在幕后发生了什么,因为我在尝试Dapper之前一直在做常规的ADO.NET查询,而我当时没有注意到这个错误。
答案 0 :(得分:1)
“可以通过修改连接字符串将参数'TransparentNetworkIPResolution'设置为false来解决此问题”
从这里开始:
答案 1 :(得分:0)
Dapper在这里做的并不了什么。我假设您的connection
尚未打开 - 在这种情况下,dapper会在需要时调用Open()
,并且可能是错误时调用Open
。但是:错误本身与小巧玲珑无关。如果你正在使用OpenAsync
API,字面只是在这里调用async
(或Open()
。如果您将var x = $($(".example")[0]).position(); //array 1 [0]
alert("Top: " + x.top + " Left: " + x.left);
移动到自己的代码中,我强烈怀疑您会得到完全相同的行为。