我正在尝试执行参数化存储过程,但在编译模式设置为debug
时注意到异常缓慢。慢的方法是ConvertToList
以下:
Dim result = Db.Exec(Of List(Of Dto.FieldSample))(
Function(cmd)
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "up_GetFieldSample"
cmd.Parameters.Add(New SqlClient.SqlParameter("@uploadID", uploadId))
Dim reader = cmd.ExecuteReader()
Dim converted = reader.ConvertToList(Of Dto.FieldSample)()
Return converted
End Function)
(我知道有一个.SqlList
扩展程序可用,但我首先尝试了相同的结果。我切换到Exec
以更好地了解问题的位置)
在非调试模式下执行时,存储过程在2-3秒内返回,在调试模式下则为15-20秒。我知道调试编译中经常包含跟踪等,但我试图找出实际上这么慢的内容。
debug
编译中导致查询执行时间更长的事情发生了什么?
答案 0 :(得分:3)
正如我所怀疑的那样,在ConvertToList
PopulateWithSqlReader
调用LogManager.LogFactory = New ConsoleLogFactory()
Source
潜在的问题是我的POCO(十进制?)和数据库(int)之间的数据类型不匹配。直到我连接{{1}},我才能看到异常被抛出内部,记录,然后继续前进。 235+(行)的异常处理是造成延迟的原因。