【问题标题】:Getting MultiExec is not supported by ExecuteReader when running an SPR运行 SPR 时,ExecuteReader 不支持获取 MultiExec
【发布时间】:2018-09-19 16:53:55
【问题描述】:

我写了下面的方法

public async Task<DataTable> ExecuteProcedureToDataTableAsync(string spName, object parameters, int? commandTimeout = null, bool userPrefix = false)
    {
        using (var connection = new SqlConnection(_ConnectionString))
        {
            string spNameWithPrefix = GetSpNameWithPrefix(spName, userPrefix);
            var dt = new DataTable();
            _Logger.Debug($"Executing Query: [{spNameWithPrefix}], with params:[{parameters.ToJsonString()}]");
            dt.Load(await connection.ExecuteReaderAsync(spNameWithPrefix, parameters, commandTimeout: commandTimeout, commandType: CommandType.StoredProcedure));
            _Logger.Debug($"Completed Query To DataTable: [{spNameWithPrefix}], result columnCount:[{dt.Columns.Count}], result row count:[{dt.Rows.Count}]");
            return dt;
        }
    }

然后像这样调用它:

using (var results = await ExecuteProcedureToDataTableAsync(StoredProcedureFullName, StoredProcedureParams, Timeout, userPrefix: false))
{
    ExportReport(requestModel, results);
}

我得到了例外:

ExecuteReader 不支持 MultiExec

spr 不支持执行Reader 吗?

【问题讨论】:

    标签: c# dapper


    【解决方案1】:

    ExecuteReader 不支持多次执行。请改用QueryMultiple

    【讨论】:

    • 但为什么它只是一次执行多次执行?
    • @Mortalus 由于我看不到您的实际输入,我只能猜测您构建参数的方式是导致问题的原因。它是 IEnumerable 吗?参考github.com/StackExchange/Dapper/blob/…
    • 谢谢!就是这样..我假设当从 api 操作接收一个对象时,它将是一个动态对象,但事实并非如此,它是 jObjects 数组,所以它失败了..我不得不使用 dynamicParams
    猜你喜欢
    • 1970-01-01
    • 2018-01-05
    • 2018-08-10
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 2017-01-12
    相关资源
    最近更新 更多