从Dapper.QueryMultiple方法中获取结果集/表的数量

5
在使用Dapper进行多个查询时:
 var result = sqlConnection.QueryMultiple(query, Parameters, commandType: commandType);

我该如何获取从查询返回的表格计数?它有两个重载的.Read()方法实现,每次调用时,都会移动到下一个可用结果集(没有result.Count()属性)。最终,我想将该数字放入循环中,以迭代与查询返回的表格数量相同的次数。

4个回答

6
var reader = this.DbConnection.QueryMultipleAsync(sql, Params, commandType: CommandType.StoredProcedure).Result; 

if(reader.IsConsumed == false)
    {
        DeviceTypeReport = reader?.ReadAsync<dynamic>().Result;
    }

这可能是你正在寻找的内容,希望它能帮到你。

3
这可能是您正在寻找的,希望有所帮助。
    List<dynamic> data = new List<dynamic>();
    while (reader.IsConsumed == false)
    {
       data.Add(await reader?.ReadAsync<dynamic>());
    }
    int totalRecordSet = data.Count;

0

public List NotificationExecuteMultiple(OutdoorRequest objreq, IConfiguration configuration)

公共列表 NotificationExecuteMultiple(OutdoorRequest objreq,IConfiguration配置)
    {
        var lst = new List<dynamic>();
        using (DbConnection connection = new MySqlConnection(configuration.GetConnectionString("SquareHrConn")))
        {
            using (var dr = connection.QueryMultiple(ProcedureName, GetParamenter(objreq), commandType: CommandType.StoredProcedure))
            {
                while (dr.IsConsumed == false)
                {
                    lst.Add(dr.Read());
                }
            }
        }
        return lst;
    }

请考虑花一点时间来调整你的格式。 - Farrukh Normuradov

-3
考虑以下方法以涵盖所有情况。
protected List<object> ExecuteMultiQuery<A, B, C, D, E, F, G, H, I, J>(string procedureName, DynamicParameters param = null)

    {
        List<object> result = new List<object>();
        using (var connection = new SqlConnection(ConnectionManager.ConnectionString))
        {
            try
            {
                connection.Open();
                using (var multi = connection.QueryMultiple(procedureName, param, commandType: CommandType.StoredProcedure, commandTimeout: 120))
                {
                    var varA = multi.Read<A>();
                    if (varA != null) { result.Add(varA.ToList()); }
                    var varB = multi.Read<B>();
                    if (varB != null) { result.Add(varB.ToList()); }
                    var varC = multi.Read<C>();
                    if (varC != null) { result.Add(varC.ToList()); }
                    var varD = multi.Read<D>();
                    if (varD != null) { result.Add(varD.ToList()); }
                    var varE = multi.Read<E>();
                    if (varE != null) { result.Add(varE.ToList()); }
                    var varF = multi.Read<F>();
                    if (varF != null) { result.Add(varF.ToList()); }
                    var varG = multi.Read<G>();
                    if (varG != null) { result.Add(varG.ToList()); }
                    var varH = multi.Read<H>();
                    if (varH != null) { result.Add(varH.ToList()); }
                    var varI = multi.Read<I>();
                    if (varI != null) { result.Add(varI.ToList()); }
                    var varJ = multi.Read<J>();
                    if (varJ != null) { result.Add(varJ.ToList()); }

                    //if (varA != null) { result.Add(varA.ToList()); }
                    //if (resultSets > 1) { result.Add(multi.Read<B>().ToList()); }
                    //if (resultSets > 2) { result.Add(multi.Read<C>().ToList()); }
                    //if (resultSets > 3) { result.Add(multi.Read<D>().ToList()); }
                    //if (resultSets > 4) { result.Add(multi.Read<E>().ToList()); }
                    //if (resultSets > 5) { result.Add(multi.Read<F>().ToList()); }
                    //if (resultSets > 6) { result.Add(multi.Read<G>().ToList()); }
                    //if (resultSets > 7) { result.Add(multi.Read<H>().ToList()); }
                    //if (resultSets > 8) { result.Add(multi.Read<I>().ToList()); }
                    //if (resultSets > 9) { result.Add(multi.Read<J>().ToList()); }    
                    return result;
                }
            }
            catch (System.Exception e)
            {
                string message = e.Message;
            }
        }

        return result;
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接