Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC-使用分页与Oracle和Dapper协作_C#_Asp.net Mvc_Oracle_Dapper - Fatal编程技术网

C# ASP.NET MVC-使用分页与Oracle和Dapper协作

C# ASP.NET MVC-使用分页与Oracle和Dapper协作,c#,asp.net-mvc,oracle,dapper,C#,Asp.net Mvc,Oracle,Dapper,我不得不将sql server更改为oracle 所以我重拨了查询 我使用dapper在sql server上的查询/方法是这样的,并且工作得非常完美: public Pagination<User> ShowAllUsers(string name, int pageSize, int pageNumber) { var cn = DbContext.Database.Connection; var sql =

我不得不将sql server更改为oracle

所以我重拨了查询

我使用dapper在sql server上的查询/方法是这样的,并且工作得非常完美:

   public Pagination<User> ShowAllUsers(string name, int pageSize, int pageNumber)
        {
            var cn = DbContext.Database.Connection;

            var sql = @"SELECT * FROM USERS" +
                  "WHERE (@Name IS NULL OR Nome LIKE @Name+ '%') " +
                  "ORDER BY [Nome] " +
                  "OFFSET " + pageSize * (pageNumber - 1) + " ROWS " +
                  "FETCH NEXT " + pageSize + " ROWS ONLY " +
                  " " +
                  "SELECT COUNT(Id) FROM USERS" +
                  "WHERE (@Nome IS NULL OR Name LIKE @Name + '%') ";

            var multi = cn.QueryMultiple(sql, new { Name = name});
            var users= multi.Read<User>();
            var total = multi.Read<int>().FirstOrDefault();
        }

如何调整此查询以使用dapper?

可能是因为您没有将pageSize作为参数传递

var multi = cn.QueryMultiple(sql, new { Name = name, PageSize = pageSize});

您在哪里将
pageSize
(和
pageNumber
)传递到查询
new{Name=Name}
=>
new{Name=Name,pageSize,pageNumber}
@Selvin您的观察很重要,我忘了观察参数的经过。修改时,我从Dapper Reader处理的异常中得到错误<代码>“读取器已被释放;这可能发生在所有数据都已被使用对象名称:'Dapper.SqlMapper+GridReader''之后。”因此我将变量“multi”更改为cn.Query,但现在在用户和总变量中出现错误。有什么想法吗?
pageNumber
参数缺少,如下所示well@PiotrŁazarczyk是个好地方。他的sql server原始代码也缺少这些参数。他的sql server原始代码也缺少这些参数。不,不是-因为他没有使用这些变量作为参数,而是直接将其添加到sql中code@Selvin你说得对,他正在使用连接来构建他的查询。这有点离题,但将所有这些变量作为参数使用会改进他的查询,就像他在name中使用的那样。不确定是否可以使用MSSQL中的
OFFSET
FETCH NEXT
Invalid parameter binding Parameter Name: pageSize
var multi = cn.QueryMultiple(sql, new { Name = name, PageSize = pageSize});