Asp.net core 在EF Core 2.1中执行异步非可选存储过程
我正在尝试执行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
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谢谢