Asp.net 如何将存储过程结果存储到实体框架中的变量?

Asp.net 如何将存储过程结果存储到实体框架中的变量?,asp.net,asp.net-mvc,entity-framework,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(); //

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

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);
} 

当我在ManagementStudio中手动执行存储过程时,该存储过程工作正常。我的代码的问题是在执行后返回一个
null

我的变量赋值应该是另一种方式

vm.FirstName=gResult.SAPID

而不是


gResult.SAPID=vm.FirstName

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

vm.FirstName=gResult.SAPID

而不是


gResult.SAPID=vm.FirstName

如果没有看到存储过程,很难告诉您。 确保存储过程具有输出参数

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

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

如果不查看存储过程,很难告诉您。 确保存储过程具有输出参数

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

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

能否显示
sp\u GetUserDetails
方法和存储过程本身?旁注:存储过程不应使用
sp\u
前缀。微软已经这样做了,而且你确实有可能在将来的某个时候发生名称冲突。最好只是简单地避免使用
sp.
并使用其他东西作为前缀,或者根本不使用前缀!能否显示
sp\u GetUserDetails
方法和存储过程本身?旁注:存储过程不应使用
sp\u
前缀。微软已经这样做了,而且你确实有可能在将来的某个时候发生名称冲突。最好只是简单地避免使用
sp.
并使用其他东西作为前缀,或者根本不使用前缀!