【发布时间】:2020-09-03 11:57:16
【问题描述】:
为了在我使用 sql server (tsql) 之前在复杂查询中使用分页,我可以在任何复杂查询中使用 COUNT(*) OVER() as TotalCount 非常轻松地做到这一点,它将返回总计数和我可以在分页中使用它,但在 mysql 中它不起作用
用asp.net core连接mysql有两个包
- MySql.Data.EntityFrameworkCore
- Pomelo.EntityFrameworkCore.MySql
我都使用了,但我不知道如何在存储过程中实现分页并使用 FromSqlRaw 返回问题是返回行数 OUT TotalCount INT 我无法得到它
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
var result = await dbContext.Result.FromSqlRaw("CALL get_articles (0,30,@TotalCount)",totalCount
).AsNoTracking().ToListAsync();
这里是SQLFiddle演示
【问题讨论】:
标签: c# mysql asp.net-core ef-core-3.1