我正在使用.NET Core 5 DBContext访问MYSQL存储过程,以获得以下代码的结果:
var param = new SqlParameter("@word", word);
var result = _context.History.FromSqlRaw("EXEC GETHISTORY @word", param).ToList();
if (result != null)
{
retval = (IEnumerable<HistoryDM>)result;
}
然而,它抛出了以下例外,
MySql.Data.MySqlClient.MySqlException:"只能存储MySqlParameter对象">
那么,试图告诉我的错误是什么?我该如何修复它?
SqlParameter
用于SqlClient,即SQL Server。您需要new MySqlParameter
(连接、命令、参数和读取器类型都是特定于提供程序的(。或者更好:让连接创建参数,或者使用一个工具来处理ADO.NET内部。
好吧,当人们知道它时,它看起来相对简单:
Object result = _context.History.FromSqlInterpolated($"CALL ADDHISTORY ({word})").ToList();
因此,同时使用CALL(而不是EXEC(和参数周围的括号,这也类似于MySQL本机调用。这里没有黑魔法。
非常感谢你的支持@Marc!!