简体   繁体   English

EF Core with Pomelo Adapter 在执行存储过程时返回错误

[英]EF Core with Pomelo Adapter returns error when executing stored procedure

I am using EF Core 2.2.6.我正在使用 EF Core 2.2.6。 I have a stored procedure that I call using the code below:我有一个使用以下代码调用的存储过程:

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

and I get the following error:我收到以下错误:

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",

How can I call it and pass the two parameters that I have?我如何调用它并传递我拥有的两个参数?

See my answer on GitHub about the same question for EF Core 3.0.有关 EF Core 3.0 的相同问题,请参阅我在GitHub 上的回答。

In short, use the parameter names exactly as you defined them and use MySQL's correct call syntax (parenthesis):简而言之,完全按照您定义的方式使用参数名称,并使用 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();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM