Wie greife ich auf 'Ergebnisse', 'Nachrichten' und 'Rückgabewert' einer gespeicherten Prozedur mit Entity Framework 4.4 und C# 4.0?Zugriff auf 'Ergebnisse', 'Nachrichten' und 'Rückgabewert' einer gespeicherten Prozedur mit Entity Framework 4?
Unten ist die gespeicherte Prozedur, die drei Parameter verwendet. Auf die eine oder andere Weise, wenn ich die Store-Prozedur ausführe, sollte ich hoffentlich in der Lage sein, auf alle drei Werte für "Ergebnisse", "Nachrichten" und "Rückgabewert" zuzugreifen.
Kann mir jemand helfen, herauszufinden, wie man das mit EF macht? Mit dem Code, der aus EF erzeugt wird alles, was ich scheinen zugreifen zu können, ist es, die 'Ergebnisse' der Abfrage (zurückgegebenen Zeilen)
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
CODE
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);
}
Wurde dieses Problem mit EF nicht zurückgegeben, gespeicherte Rückgabewerte wurden mit EF 6.1.3 behoben? – Kixoka