1

ServiceStack 3.9.69 通过 Nuget 使用 SqlServer OrmLite 方言

我正在尝试执行参数化存储过程,但是当编译模式设置为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导致查询需要更长的时间来执行?

4

1 回答 1

3

ConvertToList正如我所怀疑的,在调用Source期间执行了一些内部错误处理/记录PopulateWithSqlReader

根本问题是我的 POCO(十进制?)和数据库(int)之间的数据类型不匹配。直到我连接了一个LogManager.LogFactory = New ConsoleLogFactory(),我才能看到一个异常在内部被抛出,记录,然后继续。235+(行)的异常处理是导致延迟的原因。

于 2013-10-27T03:47:37.647 回答