Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Obtendo um feedback de resultado de um procedimento armazenado no Entity Framework


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.