0

我正在使用 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",

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

4

1 回答 1

0

有关EF Core 3.0 的相同问题,请参阅我在GitHub 上的回答。

简而言之,完全按照您定义的方式使用参数名称,并使用 MySQL 的正确调用语法(括号):

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();

于 2019-11-30T01:26:35.550 回答