DOMANDA
Come accedere ai "Risultati", "Messaggi" e "Valore restituito" di una stored procedure utilizzando Entity Framework 4.4 e C# 4.0?Come accedere a "Risultati", "Messaggi" e "Valore restituito" di una stored procedure utilizzando Entity Framework 4?
Di seguito è riportata la stored procedure che accetta tre parametri. In un modo o nell'altro, quando eseguo la procedura di archiviazione, dovrei, spero, riuscire ad accedere a tutti e tre i valori per "Risultati", "Messaggi" e "Valore restituito".
Qualcuno può aiutarmi a capire come farlo con EF? Utilizzando il codice che viene generato da tutti gli obiettivi EF mi sembra di essere in grado di accedere è 'Risultati' della query (righe restituite)
stored procedure
USE [THIS_DB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[THIS_PROCEDURE]
@FIRST_PARAM CHAR(17) = NULL,
@SECOND_PARAM CHAR(2) = NULL,
@THIRD_PARAM CHAR(5) = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ReturnValue INT = 0;
IF COALESCE(@SECOND_PARAM, 'XX') NOT IN ('XX', 'YY')
BEGIN
RAISERROR('Invalid @SECOND_PARAM value: %s; @SECOND_PARAM mXXt be XX or YY.', 2, 1, @SECOND_PARAM) WITH SETERROR;
SET @ReturnValue = -50100;
END
IF COALESCE(@SECOND_PARAM, 'XX') = 'YY'
BEGIN
RAISERROR('@SECOND_PARAM value: %s; YY is valid, but currently is not supported, returning XX results.', 2, 1, @SECOND_PARAM) WITH SETERROR;
SET @ReturnValue = -50105;
END
IF COALESCE(@THIRD_PARAM, 'XX-EN') NOT IN ('XX-EN')
BEGIN
RAISERROR('Invalid @THIRD_PARAM value: %s; @THIRD_PARAM mXXt be XX-EN.', 2, 1, @THIRD_PARAM) WITH SETERROR;
SET @ReturnValue = -50101;
END
SELECT DISTINCT
THESE.VALUES
FROM dbo.THIS_TABLE
WHERE THESE.CONDITIONS;
IF @@ROWCOUNT = 0
BEGIN
DECLARE @SP_MATCHCOUNT INT
EXEC @SP_MATCHCOUNT = [dbo].[MATCHTABLE] @PATTERNH = @PATTERN
IF @SP_MATCHCOUNT > 0
BEGIN
RAISERROR('Mapping from HERE to HERE not found for PATTERN: %s.', 2, 1, @PATTERN) WITH SETERROR
SET @ReturnValue = -50103;
END
ELSE
BEGIN
RAISERROR('PATTERN Pattern not found for PATTERN: %s.', 2, 1, @PATTERN) WITH SETERROR
SET @ReturnValue = -50104;
END
END
RETURN @ReturnValue
END
CODICE
public virtual ObjectResult<THIS_PROCEDURE_RESULT> THIS_PROCEDURE_METHOD(string FIRST, string SECOND, string THIRD)
{
var FIRST_PARAM = FIRST != null ?
new ObjectParameter("FIRST", FIRST) :
new ObjectParameter("FIRST", typeof(string));
var SECOND_PARAM = SECOND != null ?
new ObjectParameter("SECOND", SECOND) :
new ObjectParameter("SECOND", typeof(string));
var THIRD_PARAM = THIRD != null ?
new ObjectParameter("THIRD", THIRD) :
new ObjectParameter("THIRD", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<THIS_PROCEDURE_RESULT>("THIS_PROCEDURE", FIRST_PARAM, SECOND_PARAM, THIRD_PARAM);
}
Questo problema con EF non ha restituito il valore di ritorno dei processi memorizzati è stato corretto con EF 6.1.3? – Kixoka