【发布时间】:2021-07-25 23:33:08
【问题描述】:
我创建了一个存储过程stocks.public.daily_actions_full(),它不会接收或返回任何内容,它只是将数据从视图插入到表中。
使用dbcontext scaffold后,除了存储过程之外,所有的表和视图都被添加了。
我看到这是一个已知问题,调用存储过程的选项是使用ExecuteSqlCommand。
我尝试了以下代码:
using (var db = new stocksContext())
{
var rowsAffected = db.Database.ExecuteSqlCommand("CALL stocks.public.daily_actions_full()");
}
但我收到以下错误:
不确定我在这里遗漏了什么,或者是否有另一种调用存储过程的方法。
也许手动将其添加到上下文文件中? (找不到方法)
谢谢!
【问题讨论】:
-
ExecuteSqlCommand在 3.1 之后从 EF 核心中删除。有ExecuteSqlCommandAsync -
我仍然收到上面提到的错误。
'DatabaseFacade' does not contain a definition for 'ExecuteSqlCommandAsync' and no accessible extension method 'ExecuteSqlCommandAsync' accepting a first argument of type 'DatabaseFacade' could be found -
文件顶部有
using System.Data.Entity;吗? -
DatabaseFacade 类中没有
ExecuteSqlCommand方法。有ExecuteSqlRaw和ExecuteSqlInterpolated方法(以及它们的异步版本)。
标签: c# postgresql stored-procedures entity-framework-core