Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Obtenir un retour de résultat à partir d'une procédure stockée dans Entity Framework

Une façon de le faire est d'appeler ExecuteStoreCommand , et passez un SqlParameter avec une direction 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;

À l'origine, j'ai essayé d'utiliser une direction de ReturnValue :

retval.Direction = ParameterDirection.ReturnValue;

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

mais retval.Value serait toujours 0 . J'ai réalisé que retval était le résultat de l'exécution de MyProc @dtparm déclaration, donc je l'ai changé pour capturer la valeur de retour de MyProc et renvoyez-le comme paramètre de sortie.