Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 在EF Core 2.1中执行异步非可选存储过程_Asp.net Core_Entity Framework Core_Asp.net Core 2.0_Asp.net Core Webapi_Entity Framework Core 2.1 - Fatal编程技术网

Asp.net core 在EF Core 2.1中执行异步非可选存储过程

Asp.net core 在EF Core 2.1中执行异步非可选存储过程,asp.net-core,entity-framework-core,asp.net-core-2.0,asp.net-core-webapi,entity-framework-core-2.1,Asp.net Core,Entity Framework Core,Asp.net Core 2.0,Asp.net Core Webapi,Entity Framework Core 2.1,我正在尝试执行EF Core 2.1中的异步非可选存储过程 return Ok( await db.Set() .FromSql($"EXECUTE PROCEDURE MY_PROC({id})") .ToListAsync()); 错误: 无法从用法推断方法“DbContext.Set()”的类型参数。尝试显式指定类型参数 我还尝试: return Ok( await db.M

我正在尝试执行EF Core 2.1中的异步非可选存储过程

  return Ok(
              await db.Set()
              .FromSql($"EXECUTE PROCEDURE MY_PROC({id})")
              .ToListAsync());
错误:

无法从用法推断方法“DbContext.Set()”的类型参数。尝试显式指定类型参数

我还尝试:

return Ok(
             await db.MYDB
              .FromSql($"EXECUTE PROCEDURE MY_PROC({id})")              
             .ToListAsync());
错误:

控制台中的500(内部服务器错误)

然后我尝试创建一个静态方法:

public static async Task ExecSqlNonQuery(Entities db, string sql)
{
     using (var com = db.Database.GetDbConnection().CreateCommand())
     {
         com.CommandText = sql;
         com.CommandType = CommandType.StoredProcedure;
         db.Database.OpenConnection();
         await com.ExecuteNonQueryAsync();
     };
}
....
return Ok( await ExecSqlNonQuery(db,$"EXECUTE PROCEDURE MY_PROC({id})");   
但有了这段代码,我得到:

参数1:无法从“void”转换为“object”

仅适用于非异步和老式方式:

public static  bool ExecSqlNonQuery(Entities db, string sql)
{
    try
    {
        using (var com = db.Database.GetDbConnection().CreateCommand())
        {
            com.CommandText = sql;
            com.CommandType = CommandType.StoredProcedure;

            db.Database.OpenConnection();
            com.ExecuteNonQuery();

            return true;
        };
    }
    catch (Exception)
    {
        return false;
    }
}
......
return Ok(ExecSqlNonQuery(db, $"EXECUTE PROCEDURE MY_PROC({id})"););
有什么帮助吗?感谢方法用于返回SQL命令的记录集(查询)。对于其他类型的命令,您应该使用一些或方法重载

对数据库执行给定的SQL并返回受影响的行数

例如(假设SQL语法正确):

wait db.Database.ExecuteSqlCommandAsync($“执行过程MY_PROC({id})”);
返回Ok();

目标数据库类型是什么?Firebird 2.5.1谢谢