sql >> Base de Datos >  >> RDS >> Sqlserver

Obtener una retroalimentación de resultados de un procedimiento almacenado en Entity Framework

Una forma de hacerlo es llamar a ExecuteStoreCommand y pase un SqlParameter con una dirección de Output :

var dtparm = new SqlParameter("@dtparm", DateTime.Now);
var retval = new SqlParameter("@retval", SqlDbType.Int);

retval.Direction = ParameterDirection.Output;

context.ExecuteStoreCommand("exec @retval = MyProc @dtparm", retval, dtparm);

int return_value = (int)retval.Value;

Originalmente intenté usar una dirección de ReturnValue :

retval.Direction = ParameterDirection.ReturnValue;

context.ExecuteStoreCommand("MyProc @dtparm", retval, dtparm);

pero retval.Value siempre sería 0 . Me di cuenta de que retval fue el resultado de ejecutar MyProc @dtparm declaración, así que la cambié para capturar el valor de retorno de MyProc y devolver eso como un parámetro de salida.