我使用 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)
最佳答案
你能试试下面的东西吗?
使用 exec 而不是调用
var results = await _context.GetTechnicians.FromSql("EXEC GetTechniciansByTrade(@MyTrade, @PageIndex, @PageSize, @PageCount OUTPUT)"
在存储过程中选择 PageCount
我从这个 github 上得到了信息 issue .
关于mysql - 如何使用mysql调用带有输入和输出参数的Entity Framework Core中的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58420707/