【发布时间】:2019-01-10 23:25:47
【问题描述】:
我正在尝试在 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})"););
有什么帮助吗?谢谢
【问题讨论】:
-
目标数据库类型是什么?
-
火鸟 2.5.thanks
标签: asp.net-core entity-framework-core asp.net-core-2.0 asp.net-core-webapi entity-framework-core-2.1