首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c# MySql.Data.EntityFrameworkCore存储过程分页

问c# MySql.Data.EntityFrameworkCore存储过程分页
EN

Stack Overflow用户
提问于 2020-05-17 18:35:25
回答 1查看 321关注 0票数 2

对于在使用sql server (tsql)之前在复杂查询中使用分页,我可以非常轻松地使用 count (*) OVER()作为TotalCount在任何复杂查询中返回总计数,我可以在分页中使用它,但在mysql中它不能工作。

要用asp.net核心连接mysql,有两个包

  • MySql.Data.EntityFrameworkCore
  • Pomelo.EntityFrameworkCore.MySql

我使用了这两种方法,但我不知道如何在存储过程中实现分页并使用FromSqlRaw返回问题,问题是返回行数OUT TotalCount INT (我无法得到)

代码语言:javascript
复制
    DELIMITER $$
CREATE PROCEDURE get_articles(IN _offset INT, IN _count INT, OUT _total INT)
BEGIN
SELECT SQL_CALC_FOUND_ROWS * 
FROM content c JOIN content_types t 
ON c.content_type = t.id
WHERE t.name = 'article' 
LIMIT _offset, _count;
SET _total = FOUND_ROWS();
END$$
DELIMITER ;

c#与MySql.Data.EntityFrameworkCore

代码语言:javascript
复制
var result = await dbContext.Result.FromSqlRaw("CALL get_articles (0,30,@TotalCount)",totalCount
).AsNoTracking().ToListAsync();

这是SQLFiddle演示

EN

回答 1

Stack Overflow用户

发布于 2020-05-17 18:53:18

您的过程应该包含第一个元素或页码,然后可以在SQL中组合限制关键字。例如,极限kpagecount_pagenumber,k_pagecount(pagenumber+1)-1也有一个版本,它的偏移量为m。

编辑后:请在您的调用(C#)中还包括参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61856829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档