Как сохранить результаты хранимой процедуры в переменной в Entity Framework? - PullRequest
0 голосов
/ 26 июня 2018

Как мне сохранить результаты из моей хранимой процедуры в переменных? Вот мой пример кода:

public ActionResult ManageProfile(string eid)
{
     var vm = new ManageProfileViewModel();   // Call ViewModel
     sp_GetUserDetails_Result gResult = db_RIRO.sp_GetUserDetails(Session["EID"].ToString()).First();
     // Get UserId, FirstName, LastName from stored procedure result
     gResult.UserId = vm.UserId;
     gResult.FirstName = vm.FirstName;
     gResult.LastName = vm.LastName;

    return View(vm);
} 

Хранимая процедура работает нормально, когда я вручную пытаюсь выполнить ее в Management Studio. Проблема с моим кодом заключается в том, что после его выполнения возвращается null.

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Сложно сказать, не увидев хранимую процедуру. Убедитесь, что ваша хранимая процедура имеет выходной параметр.

Например, если у вас есть выходная переменная "@userId" из хранимой процедуры: что-то вроде в вашем коде:

sqlcmd.Parameters.Add("@userId", SqlDbType.NVarChar, 4000).Value = "";
sqlcmd.Parameters["@userId"].Direction = ParameterDirection.Output;using
using (SqlConnection conn = new SqlConnection(dbConnStr))
{
   sqlcmd.Connection = conn;
   conn.Open();
   sqlcmd.ExecuteNonQuery();
   conn.Close();
   if(sqlcmd.Parameters["@userId"].SqlValue.ToString() != "Null")
   {
      gResult.UserId = sqlcmd.Parameters["@userId"].SqlValue.ToString();
   }
}

Надеюсь, этот псевдокод поможет вам.

0 голосов
/ 26 июня 2018

Назначение моих переменных должно быть наоборот.

vm.FirstName = gResult.SAPID

вместо

gResult.SAPID = vm.FirstName.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...