Entity Framework db.database.sqlquery调用存储过程,获得的返回值一直为0
但是调用下层的DbCommand来执行,就可以获取正确的返回值。
小伙伴们有遇到这种情况没有
db.database.sqlquery 返回 影响行数 db.database.sqlquery<T> T接收 存储过程返回值
可能我没说清楚吧,我程序中就是用的sqlquery的泛型。可是存储过程的返回值取不到。
SqlParameter[] param=new SqlParameter[]
{
new SqlParameter("@orderId",20)
,new SqlParameter("@orderLineId", System.Data.SqlDbType.Int)
,new SqlParameter("@Return", SqlDbType.Int)
};
param[1].Direction = ParameterDirection.Output;
param[2].Direction = ParameterDirection.ReturnValue;
string sql = "GetOrderLine @orderId,@orderLineId";
int result;
using (MyTestEntities db=new MyTestEntities())
{
//using (DbConnection conn=db.Database.Connection)
//{
// conn.Open();
// using (DbCommand cmd=conn.CreateCommand())
// {
// cmd.CommandText = sql;
// cmd.Parameters.AddRange(param);
// cmd.CommandType = CommandType.StoredProcedure;
// cmd.ExecuteScalar();
// }
//}
result = db.Database.SqlQuery<int>(sql, param).FirstOrDefault();
}
var result1 = param[1].Value.ToString();
var result2 = param[2].Value.ToString();
return Ok();
而且sq.database.sqlquery也是返回查询的结果集。sql.database.executesqlcommand才会返回受影响的行数