如何从 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 与 Set
或 Query
类似的尝试已过时)
_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>();
我在 Mysql 中有一个存储过程 returns 一个 table。
使用像 _context.database.SqlQuery
这样的旧方法不再有效。
_context.database.Execute*
仅包含 returns 受影响行数的方法。
在我的场景中,我使用的是脚手架,无法从我的代码创建数据库对象,但我可以创建 classes。
以下代码(and/or 与 Set
或 Query
类似的尝试已过时)
_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>();