Uma maneira de fazer isso é chamar
ExecuteStoreCommand
, e passe um SqlParameter
com uma direção 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 eu tentei usar uma direção de
ReturnValue
:retval.Direction = ParameterDirection.ReturnValue;
context.ExecuteStoreCommand("MyProc @dtparm", retval, dtparm);
mas
retval.Value
sempre seria 0
. Percebi que retval
foi o resultado da execução do MyProc @dtparm
declaração, então eu mudei para capturar o valor de retorno de MyProc
e retorne isso como um parâmetro de saída.