Odie
Odie

Reputation: 375

How to store stored procedure results to a variable in Entity Framework?

How do I store the results from my stored procedure to variables? Here is my sample code:

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

The stored procedure works fine when I manually try to execute it in Management Studio. The problem with my code is after executing it returns a null.

Upvotes: 0

Views: 210

Answers (2)

Seong Kim
Seong Kim

Reputation: 585

It is difficult to tell you without seeing the stored procedure. Make sure your stored procedure has output parameter.

For example, if you have a output variable "@userId" from stored procedure: something like in your code:

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

Hope this pseudo code helps you.

Upvotes: 0

Odie
Odie

Reputation: 375

Assigning of my variables should be the other way around.

vm.FirstName = gResult.SAPID

instead of

gResult.SAPID = vm.FirstName.

Upvotes: 2

Related Questions