Jednym ze sposobów, aby to zrobić, jest wywołanie ExecuteStoreCommand
i przekaż SqlParameter
z kierunkiem 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;
Początkowo próbowałem użyć kierunku ReturnValue
:
retval.Direction = ParameterDirection.ReturnValue;
context.ExecuteStoreCommand("MyProc @dtparm", retval, dtparm);
ale retval.Value
zawsze będzie 0
. Zdałem sobie sprawę, że retval
był wynikiem wykonania MyProc @dtparm
oświadczenie, więc zmieniłem go, aby przechwycić wartość zwracaną przez MyProc
i zwróć to jako parametr wyjściowy.