none
Ejecucion procedimiento almacenado EntityFramework 2.1 sin modelo RRS feed

  • Pregunta

  • Buen día,

    Estoy tratando de ejecutar un procedimiento almacenado desde Entity Framework, en una aplicacion Net Core 2.2, en donde resultado del procedimiento no pertenece a ningún modelo de la aplicación, de hecho es una consulta que retorna una tabla que se construye dinámicamente, por lo cual no es posible asociar la ejecución del procedimiento a un modelo.

    Según he visto la forma de realizar la ejecución del procedimiento almacenado desde EF es:

    var ejemplo = _context.ModeloX.FromSql("GetEjemplo @Mes", new SqlParameter("@Mes",mes)).ToList();

    La ejecución del procedimiento almacenado retorna una tabla de este estilo:

    Ciudad | ValorBase | 2017 | 2018 | 2019

    Donde la cantidad de columnas será variable, por lo que no puedo asociarlo a un modelo definido, como lo exige ".FromSql".

    Agradezco si alguien conoce como poder realizar esa consulta.

    Muchas Gracias.....

    viernes, 20 de diciembre de 2019 20:44

Todas las respuestas

  • Hola Christian

    Si fuera por mi, te diría: "Pasate a TSQL crudo, hombre!" ... pero bueno, para mi es más fácil, pero si a vos te gusta Entity Framework ... me parece que Leandro sabe mucho de esto, seguramente no vio la pregunta ... por qué no editas el título y agregas: "LEANDROOOOOOOO"? ... yo no se cómo llamarlo 

    Me dio pena que nadie respondió esta pregunta ... ni siquiera los Moderators para poner un cartel espantoso

    Espero que Leandro te ayude, yo desconozco totalmente E.F.

    Saludos

    Pablo

    martes, 24 de diciembre de 2019 2:06
  • hola

    >>en donde resultado del procedimiento no pertenece a ningún modelo de la aplicación

    Puedes crear una clase nueva en el modelo que mapee con los datos de ese procedure, no tiene que coincidir todo con las clases que defines como tablas

    >>Donde la cantidad de columnas será variable, por lo que no puedo asociarlo a un modelo definido, como lo exige ".FromSql".

    mmm, pero alli creas columnas dinamicas que pueden variar, eso no esta bueno, porque vas a necesitar usar datatable o algun objeto dynamic

    ya que quieres hacer algo que no se corresponde con EF vas a tener que salirte por fuera y usar ADO.NET

    El dbcontext de EF te proporciona el objeto de conexion que puedas usar con el SqlCommand o SqlDataAdapter

    Igual aclaro que aqui el problema no es EF, porque puede ejecutar procedures donde definas una class especifica para obtener los datos

    El problema lo tienes porque armas columnas dinamicas, podrias haber realizado una consulta simple que retorne los años como filas y despues lo pivoteas usando linq

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    jueves, 26 de diciembre de 2019 14:57