In SQL Server Management Studio:
- Right click the procedure
- Execute
- Do not enter value for the OUTPUT parameter
- Enter value for another string parameter
- The correct value is returned (ex: 12+)
Calling code:
DECLARE @return_value int,
@CustomerID bigint
EXEC @return_value = [dbo].[InsertCustomer]
@CustomerID = @CustomerID OUTPUT,
@Name = N'CustomerName'
SELECT @CustomerID as N'@CustomerID'
SELECT 'Return Value' = @return_value
In application code:
- Run the following code
- The returned value for
CustomerID
is always 1
Code:
ObjectParameter ob = new ObjectParameter("CustomerID", typeof(long));
var CustomerID = db.InsertCustomer(ob, "CustomerName");
I attempted to change the new ObjectParameter(,)
second parameter by passing a type and often object by value (ex: 0, 1 etc) but with no avail.
What could have went wrong here?
Update:
This is how the Entity Framework procedure code look like:
public virtual int InsertCustomer(ObjectParameter customerID, string name)
{
var nameParameter = name != null ?
new ObjectParameter("Name", name) :
new ObjectParameter("Name", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("InsertCustomer", customerID, nameParameter);
}