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.
并使用其他东西作为前缀,或者根本不使用前缀!