如何将存储过程的结果存储到Entity Framework中的变量?

时间:2018-06-26 18:12:47

标签: asp.net asp.net-mvc entity-framework

如何将存储过程的结果存储到变量中?这是我的示例代码:

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 :(得分:2)

分配变量应该是另一种方式。

vm.FirstName = gResult.SAPID

代替

gResult.SAPID = vm.FirstName

答案 1 :(得分:0)

很难不看存储过程就告诉您。 确保您的存储过程具有输出参数。

例如,如果存储过程中有一个输出变量“ @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();
   }
}

希望此伪代码对您有帮助。