我在MySQL中有DB,使用通用的mysql实体框架最终会出现错误,所以我切换到了pomelo.entityframeworkcore.mysql。
在我的MySQL Db中,几乎没有存储过程。但我不明白该如何与它结合。通常的mysql查询运行良好,工作正常,就像这样:
public void ONELINE_SQL_TEST()
{
var db = new DBContext();
var test = db.DocumentsInfo.FromSql("SELECT * FROM `DocumentsInfo` LIMIT 0, 2").ToList();
}DocumentsInfo是我的模型类/ mysql表之一。
但是我不能调用我的存储过程,继续接收错误:
USE `testProj`$$
CREATE PROCEDURE `GetDocumentsByName` (DocName varchar(255))
BEGIN
Select * from AllDocuments where DocumentName like DocName;
END$$
DELIMITER ;还有我试过的代码:
var docs1 = db.DocumentsInfo.FromSql("GetDocumentByName @DocName = {0}", Filename).ToList(); //not working
var docs2 = db.DocumentsInfo.FromSql("GetDocumentByName @p0", Filename).ToList(); //not working错误:
您的SQL语法出现错误;请检查与MySQL服务器版本相对应的手册,以获得在第1行“GetDocumentByName‘nameAZ”附近使用的正确语法。

发布于 2018-10-18 23:19:31
您需要将调用放在sql存储过程之前,从内存:)
即
var docs1 = db.DocumentsInfo.FromSql("CALL GetDocumentByName @p0", Filename).ToList();最后,我阅读了stored不支持存储过程的命名参数,因此@p0因此,如果您有更多的参数,并说其中一个参数是您要执行的路径:
var docs1 = db.DocumentsInfo.FromSql("CALL GetDocumentByName @p0, @p1", parameters: new[] { Path, Filename }).ToList();https://stackoverflow.com/questions/52879643
复制相似问题