执行存储过程时,带有Pomelo适配器的EF Core返回错误

时间:2019-11-28 10:28:51

标签: c# .net-core entity-framework-core ef-core-2.2 pomelo-entityframeworkcore-mysql

我正在使用EF Core 2.2.6。我有一个使用以下代码调用的存储过程:

var dateFromParam = new MySqlParameter("@DateFrom", dateFrom.ToShortDateString());
var dateToParam = new MySqlParameter("@DateTo", dateTo.ToShortDateString());

List<MyData> result = await context.Query<MyData>().AsNoTracking().FromSql("CALL MyStoredProcudure @p0, @p1",
    parameters: new [] { dateFromParam, dateToParam }).ToListAsync();

,我收到以下错误消息:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@p0, @p1' at line 1",

如何调用它并传递我拥有的两个参数?

1 个答案:

答案 0 :(得分:0)

请参阅GitHub上有关EF Core 3.0相同问题的答案。

简而言之,请完全按照定义的名称使用参数名称,并使用MySQL正确的call syntax(括号):

var dateFromParam = new MySqlParameter("@DateFrom", dateFrom.ToShortDateString());
var dateToParam = new MySqlParameter("@DateTo", dateTo.ToShortDateString());

List<MyData> result = await context
    .Query<MyData>()
    .AsNoTracking()
    .FromSql("CALL MyStoredProcudure(@DateFrom, @DateTo)",
             parameters: new [] { dateFromParam, dateToParam })
    .ToListAsync();