带有Dapper和C#的Oracle,将参数传递给查询会导致“读取器已被处置”错误

时间:2019-12-05 18:15:03

标签: c# oracle pagination dapper

我有一个方法,需要将名称,pageSize和pageNumber传递给SQL字符串,但是在传递所有参数之后,在“ total”变量处出现以下错误错误:

  

System.ObjectDisposedException:阅读器已被处置;不能使用其他方法。在消耗完所有数据ObjectDisposed_ObjectName_Name

之后,可能会发生这种情况
public Pagination<Boats> GetAll(string name, int pageSize, int pageNumber)
{
    var cn = DbContext.Database.Connection;
    var sql = @"SELECT * 
                FROM (
                    SELECT ROWNUM rnum, b.* 
                    FROM (
                        SELECT * 
                        FROM RDVE.BOATS
                        WHERE (:Name IS NULL OR RDVE.BOATS.NOME LIKE :Name+ '%')
                                )b 
                        ) 
                    WHERE RNUM between :PageSize * (:PageNumber - 1) AND
                        (:PageSize * :PageNumber)";

    var multi = cn.QueryMultiple(sql, new { Name = name, PageSize = pageSize, PageNumber = pageNumber });
    var Boats= multi.Read<Boats>();
    var total = multi.Read<int>().FirstOrDefault();

    var list = new Pagination<Boats>()
    {
        List = Boats,
        Count = total
    };
    return list ;
}

我不明白为什么会收到此错误,显然是将参数传递给了SQL字符串,但是当对“总计”变量中的值求和时,就会出现此错误。

注意:我的数据库为空,只有表

0 个答案:

没有答案