none
parametro de sql en entity framework core 3.1 RRS feed

  • Pregunta

  • bien para minimizar la pregunta hice lo siguiente, cree este procedimiento almacenado

    ALTER proc [dbo].[AgregarSP](@ID1 int, @Valor int OUTPUT) as
    
    	begin
    
    		SET @Valor = @ID1 + 2
    
    		return @Valor
    
    	end

    que recibe un valor @id1 y da el resultado @valor como respuesta.

    El problema es que no se como ejecutar y obtener el resultado de @valor usando entity framework core 3.1
    si me pueden dar una mano

    lunes, 3 de mayo de 2021 2:07

Respuestas

  • El problema es que no se como ejecutar y obtener el resultado de @valor usando entity framework core 3.1

    El truco para obtener el @valor es que lo tienes que definir como OUT cuando lo pasas en el EXEC. Entonces te llega su valor en el SqlParameter que le pasas al ExecuteSqlCommand. Más o menos así:

    string sql = "EXEC dbo.AgregarSP @ID1, @Valor OUT";
    var result = db.Database.ExecuteSqlCommand(sql, in1, out1);
    
    int valor = (int)out1.Value;

    Por cierto, una observación acerca de tu SP: Estás devolvendo @Valor por duplicado. Lo devuelves en el parámetro OUT y además lo has puesto en un Return, con lo que también lo devuelves en el ParameterResult. Lo normal es devolverlo de una forma o de la otra, pero no ambas a la vez.

    lunes, 3 de mayo de 2021 12:08
    Moderador

Todas las respuestas

  • El problema es que no se como ejecutar y obtener el resultado de @valor usando entity framework core 3.1

    El truco para obtener el @valor es que lo tienes que definir como OUT cuando lo pasas en el EXEC. Entonces te llega su valor en el SqlParameter que le pasas al ExecuteSqlCommand. Más o menos así:

    string sql = "EXEC dbo.AgregarSP @ID1, @Valor OUT";
    var result = db.Database.ExecuteSqlCommand(sql, in1, out1);
    
    int valor = (int)out1.Value;

    Por cierto, una observación acerca de tu SP: Estás devolvendo @Valor por duplicado. Lo devuelves en el parámetro OUT y además lo has puesto en un Return, con lo que también lo devuelves en el ParameterResult. Lo normal es devolverlo de una forma o de la otra, pero no ambas a la vez.

    lunes, 3 de mayo de 2021 12:08
    Moderador
  • Hola,

    ¿Alguna novedad sobre la consulta realizada?

    Gracias por usar los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    lunes, 3 de mayo de 2021 18:09
    Moderador
  • el comando ExcuteSqlCommand, no esta presente en core 3.1 le puse el namespace respectivo using.System.Data.Entity pero no lo encuentra

    miércoles, 5 de mayo de 2021 0:36