mysql - 如何使用mysql调用带有输入和输出参数的Entity Framework Core中的存储过程

标签 mysql stored-procedures entity-framework-core output-parameter input-parameters

我使用 ASP.net Core 2.2 和 Entity Framework core 2.2.6 以及 Pomelo.EntityFrameworkCore.MySql 2.2.0 来连接 MySQL,我有一个存储过程,它有 3 个输入参数和 1 个输出参数。我可以像这样在 MySQL 工作台中调用它

CALL GetTechniciansByTrade('Automobile', 1, 10, @total);
select @total;

现在我想调用这个使用 Entity Framework 核心,我目前使用的代码是

var outputParameter = new MySqlParameter("@PageCount", MySqlDbType.Int32);
outputParameter.Direction = System.Data.ParameterDirection.Output;

var results = await _context.GetTechnicians.FromSql("Call GetTechniciansByTrade(@MyTrade, @PageIndex, @PageSize, @PageCount OUT)",
new MySqlParameter("@MyTrade", Trade),
new MySqlParameter("@PageIndex", PageIndex),
new MySqlParameter("@PageSize", PageSize),
outputParameter).ToListAsync();

int PageCount = (int)outputParameter.Value;

我目前得到的异常是

Only ParameterDirection.Input is supported when CommandType is Text (parameter name: @PageCount)

最佳答案

你能试试下面的东西吗?

  1. 使用 exec 而不是调用

    var results = await _context.GetTechnicians.FromSql("EXEC GetTechniciansByTrade(@MyTrade, @PageIndex, @PageSize, @PageCount OUTPUT)"

  2. 在存储过程中选择 PageCount

我从这个 github 上得到了信息 issue .

关于mysql - 如何使用mysql调用带有输入和输出参数的Entity Framework Core中的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58420707/

相关文章:

c# - Linq Entity Framework

php - 使用 Flex 移动设备登录系统

MySQL select 语句访问列中的部分十六进制值

java代码使存储过程在DAO层返回结果集

php - 使用不带存储过程的 MySQL 是否会错过某些内容?

entity-framework-core - 如何在内存中没有 key 的情况下对 EF core 3 View 进行单元测试?

php - 使用 mysql 查询时 JSON/PHP 不工作

javascript - 如何修复 JSON.parse() 命令中不需要的异常

c# - System.Data.dll 附加信息 : Invalid object name 中发生类型 'System.Data.SqlClient.SqlException' 的异常

c# - Net core EF 3.1 LINQ 字符串比较不再有效