I have a stored procedure that inserts into a table then executes this line
SET @returnVal = SCOPE_IDENTITY();
and after that I\'ve tried both:
context.Database.ExecuteSqlCommand
return the command executing result and not the query result.
If you need to get data than use context.Database.SqlQuery
.
SET @ReturnVal=SCOPE_IDENTITY()
and then use the select.
Example: How to use DbContext.Database.SqlQuery<TElement>(sql, params) with stored procedure? EF Code First CTP5
Declare a output type of parameter in your procedure definition:
create procedure [dbo].[Procedurename] @returnVal int output
as
SET @returnVal = SCOPE_IDENTITY();
and while calling the stored procedure call it as:
declare @returnVal int
exec Procedurename @returnVal output
print @returnVal
taken from the OPs question
Adding an output parameter worked (answer marked below).
The stored procedure signature looks like this now:
My stored procedure signature now looks like this:
CREATE PROCEDURE SP_MyStoreProc ([Multiple Parameters], @returnVal int output)
The last line of the stored procedure is:
return @returnVal
My C# code looks like this now: (db is an instance of my dbContext class)
System.Data.Objects.ObjectParameter identityParameter =
new System.Data.Objects.ObjectParameter("returnVal", 0);
db.SP_MyStoredProc([Multiple Parameters], identityParameter);
int myNewIdentity = Convert.ToInt32(identityParameter.Value);