当前位置:  开发笔记 > 编程语言 > 正文

Dapper给出“关闭阅读器时无效尝试调用FieldCount”。尝试使用“ QueryMultiple”时

如何解决《Dapper给出“关闭阅读器时无效尝试调用FieldCount”。尝试使用“QueryMultiple”时》经验,为你挑选了1个好方法。

我有一个Dapper.NET QueryMultiple方法的包装方法。它成功地从存储过程中获取数据,该存储过程具有3个查询,所有SELECT查询均为查询。但是获取数据后,我无法使用ReadReadAsync将数据分配给类变量。我在下面附上我的代码。

public Tuple, IEnumerable, IEnumerable> 
        QueryMultiple()
    {
        try
        {
            var data = MultiQuery("[App].[USP_GetAllCategories]");
            var category = data.Read();
            var subcategory = data.Read();
            var subSubcategory = data.Read();
            return new Tuple, IEnumerable, IEnumerable>(
                category, subcategory, subSubcategory);
        }
        catch (Exception)
        {
            return null;
        }
    }

    public SqlMapper.GridReader MultiQuery(string storedProcedureName)
    {
        using (var connection = LocalConnection())
        {
            try
            {
                return connection.QueryMultiple(
                    sql: storedProcedureName,
                    commandType: CommandType.StoredProcedure);
            }
            catch (Exception)
            {
                return null;
            }
            finally
            {
                CloseConnection(connection);
            }
        }
    }

Marc Gravell.. 5

看你的MultiQuery方法。特别要看一下该finally块。现在考虑:在使用数据之前已调用该块。基本上,不要那样做。

如果是我:

using (var connection = LocalConnection())
uaing (var data = conn.QueryMultiple("[App].[USP_GetAllCategories]",
    command type: CommandType.StoredProcedure))
{
    //... Consume
}

如果编写QueryMultipleSP添加命令类型的扩展方法很有帮助,则可以这样做,但是...



1> Marc Gravell..:

看你的MultiQuery方法。特别要看一下该finally块。现在考虑:在使用数据之前已调用该块。基本上,不要那样做。

如果是我:

using (var connection = LocalConnection())
uaing (var data = conn.QueryMultiple("[App].[USP_GetAllCategories]",
    command type: CommandType.StoredProcedure))
{
    //... Consume
}

如果编写QueryMultipleSP添加命令类型的扩展方法很有帮助,则可以这样做,但是...

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有