Quantcast
Channel: Visual C# forum
Viewing all articles
Browse latest Browse all 31927

Calling Stored Procedure with C# and Entity Framework

$
0
0

I am trying to run a simple stored procedure using a c# application I am writing that is using Entity Framework. Here is my stored procedure:

ALTER PROCEDURE [dbo].[spupdTblAlertBySiteAlert]
@sitealert_fk int,
@op nvarchar(50) OUTPUT
AS

SET NOCOUNT ON

BEGIN TRY

UPDATE tblALERT SET STATUS = '2'
WHERE SITEALERT_FK = @sitealert_fk
 AND STATUS = '1'
SELECT @op = 'Test'
END TRY

BEGIN CATCH
SELECT ERROR_MESSAGE() AS ErrorMessage;
SELECT @op = 'TEST2'
END CATCH

Here is my code that is getting rejected:

          

static void Main(string[] args)
        {

           var _db = new ConsumptionEntities();

   ObjectParameter stat = new ObjectParameter("stat", typeof(string));

  _db.spupdTblAlertBySiteAlert(1,stat).First();

        }

Whenever I run this I get an error on the following generated EF code:

public virtual ObjectResult<string> spupdTblAlertBySiteAlert(Nullable<int> sitealert_fk, ObjectParameter op)
        {
            var sitealert_fkParameter = sitealert_fk.HasValue ?
                new ObjectParameter("sitealert_fk", sitealert_fk) :
                new ObjectParameter("sitealert_fk", typeof(int));
    
            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<string>("spupdTblAlertBySiteAlert", sitealert_fkParameter, op);
        }


System.Data.EntityCommandExecutionException was unhandled
  HResult=-2146232004
  Message=An error occurred while executing the command definition. See the inner exception for details.
  Source=System.Data.Entity
  StackTrace:
       at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
       at System.Data.Objects.ObjectContext.CreateFunctionObjectResult[TElement](EntityCommand entityCommand, ReadOnlyMetadataCollection`1 entitySets, EdmType[] edmTypes, MergeOption mergeOption)
       at System.Data.Objects.ObjectContext.ExecuteFunction[TElement](String functionName, MergeOption mergeOption, ObjectParameter[] parameters)
       at System.Data.Objects.ObjectContext.ExecuteFunction[TElement](String functionName, ObjectParameter[] parameters)
       at Test_Code.ConsumptionEntities.spupdTblAlertBySiteAlert(Nullable`1 sitealert_fk, ObjectParameter op) in c:\VS_Testproject\Windows_Services\Test_Code\Test_Code\Model1.Context.cs:line 60
       at Test_Code.Program.Main(String[] args) in c:\VS_Testproject\Windows_Services\Test_Code\Test_Code\Program.cs:line 60
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.Data.SqlClient.SqlException
       HResult=-2146232060
       Message=Procedure or function 'spupdTblAlertBySiteAlert' expects parameter '@op', which was not supplied.
       Source=.Net SqlClient Data Provider
       ErrorCode=-2146232060
       Class=16
       LineNumber=0
       Number=201
       Procedure=spupdTblAlertBySiteAlert
       Server=NMILLER-LT\nmiller
       State=4
       StackTrace:
            at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
            at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
            at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
            at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
            at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
            at System.Data.SqlClient.SqlDataReader.get_MetaData()
            at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
            at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite)
            at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite)
            at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
            at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
            at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
            at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
            at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
       InnerException: 

I have no idea what is going on with this. Any help would be appreciated. 


Viewing all articles
Browse latest Browse all 31927


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>