[Entity Framework] Parámetros OUT en funciones de mi modelo (mapeados a procedimientos almacenados)

Cuando necesitamos enviar a una función de mi modelo que esta mapeada a un procedimiento almacenado un parámetro out necesitaremos crear el ObjectParameter, aquí una express mirada por los integrantes de esta obra…

 

El procedimiento almacenado (PA)

Si tenemos nuestro procedimiento con este parámetro OUT

image

 

Nuestra función mapeada en el modelo de Entity Framework

Podemos mapeamos a una función a nuestra entidad y dicha función que sea un PA que devuelva un listado del mismo tipo que la entidad.

image 

Si lo queremos utilizar nos pide convertir en ObjectParameter (que es el objeto de parámetros que utiliza internamente el modelo para mapear valga la redundancia los parámetros, puedes verlo en clase que genera el modelo,  TuModelo.Designer)

Bueno, como decía,  al utilizarlo no da este precioso mensaje de error:

image 

 

Solución: utilizar un ObjectParameter

Creamos el parámetro (no olvidar que ObjectParameter se encuentra en el namespace System.Data.Objects)

paramOutPageTotal = new System.Data.Objects.ObjectParameter("PageTotal", typeof(int));

y para recuperar

paginaPageTotal = Int32.Parse(paramOutPageTotal.Value.ToString());

Quedaría asi:

image

 

 

Enlaces

2 comentarios en “[Entity Framework] Parámetros OUT en funciones de mi modelo (mapeados a procedimientos almacenados)”

  1. Hola, que tal. Aqui una consulta,
    Justo en estos momentos estoy necesitando añadir a un modelo de entity framework un sp con un 2 parametros uno de los cuales es de tipo OUT. Lo he importado de tal manera que el Return Type es un Int32, pero no logro ubicarlo en los metodos ya que al momento de buscarlo no lo logro ubicar ni con el intellisense. Cabe resaltar que cuando modifico el Return Type a un tipo definido en el modelo(Trasporte, por ejemplo) si logro ubicarlo, pero aqui no habria sentido puesto que lo unico que me interesa es un valor escalar que me devuelve el sp como parametro OUT. Habre echo algo incorrectamente… Gracias
    Fafner

  2. Hola @Fafner
    Lamento informarte que en la version del EF 1.0 (que viene con el VS2008 SP1) no genera automaticamente el metodo cuando seleccionas None o scalar, es por eso que no lo encuentras con el intellisense (no lo genero)
    O sea tendras que “manualmente” armarlo al metodo que consulte tu SP
    Como se haría?
    Si me esperas hasta el lunes podre postear por aqui la respuesta (de la forma mas fácil y sin sudar mucho)

    PD: No utilice todavia EF 4.0 en VS2010, pero alli si genera el metodo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *