ServiceStack.OrmLite中奇怪的“无法尝试在读取器关闭时调用读取”异常

时间:2012-10-12 21:53:45

标签: ormlite-servicestack

案例:

在网络配置中:

 MultipleActiveResultSets=true

Web请求中有两个单独的连接:

public IDbConnection GetOpenConnection()
    {
        var connection = ConnectionFactory.OpenDbConnection();
        return connection;
    }

using (var con = GetOpenConnection())
{
    var users = con.Select<User>(@"Select * from User (nolock)");
} 

using (var con = GetOpenConnection())
{
    var classrooms= con.Select<Classroom>(@"Select * from Classroom (nolock)");
} 

但是如果我使用新的IDbConnection Extensions,则随机“无效尝试在读取器关闭时调用读取”异常。

这是怀疑ServiceStack.OrmLite方法:

public static T Exec<T>(this IDbConnection dbConn, Func<IDbCommand, T> filter)
    {
        var holdProvider = OrmLiteConfig.TSDialectProvider;
        try
        {
            var ormLiteDbConn = dbConn as OrmLiteConnection;
            if (ormLiteDbConn != null)
                OrmLiteConfig.TSDialectProvider = ormLiteDbConn.Factory.DialectProvider;

            using (var dbCmd = dbConn.CreateCommand())
            {
                dbCmd.Transaction = OrmLiteConfig.CurrentTransaction;

                var ret = filter(dbCmd);
                LastCommandText = dbCmd.CommandText;
                return ret;
            }
        }
        finally
        {
            OrmLiteConfig.TSDialectProvider = holdProvider;
        }
    }

有什么想法吗?

更新

我在OrmLiteUtilExtensions中从ConvertToList收到同样的错误。

6年后更新

我的问题太旧了。我不认为问题仍在继续,很可能这个问题已经过时了。但由于“过时”,没有办法解决这个问题。我认为,SO必须添加“过时”的选项来结束理由。

enter image description here

0 个答案:

没有答案