如何从 ASP.NET Core 3.1 MySql.Data.EntityFrameworkCore 调用 MySQL 存储过程

How to call MySQL stored procedure from ASP.NET Core 3.1 MySql.Data.EntityFrameworkCore

我在 Mysql 中有一个存储过程 returns 一个 table。

使用像 _context.database.SqlQuery 这样的旧方法不再有效。
_context.database.Execute* 仅包含 returns 受影响行数的方法。

在我的场景中,我使用的是脚手架,无法从我的代码创建数据库对象,但我可以创建 classes。

以下代码(and/or 与 SetQuery 类似的尝试已过时)

_context.Set<MyModel>().FromSql("CALL My_USP({0});", parametervalue).ToList<MyModel>();

returns 关于模型不在 _context 中的错误,因为我正在搭建脚手架并且 MyModel 是来自我的模型的 class。

我完全迷失了这个以及我可以在 S.O 中找到的所有帮助。或 Google 是关于 EF6 的,这在我的情况下不起作用,库不同。

如果无法做到这一点,我们也将不胜感激。

我有一个解决方案,但我会将没有旧 ADO.NET 的人标记为答案,或者像这样更改我的 dbcontext,因为下次我做脚手架时会失败。

在上下文文件中添加到 protected override void OnModelCreating(ModelBuilder modelBuilder)

modelBuilder.Entity<MyModel>().HasNoKey();

然后调用:

 _context.Set<MyModel>().FromSqlRaw("CALL My_USP({0});", parametervalue).ToList<MyModel>();