none
TIPOS DE CONSULTA EN ENTITY FRAMEWORK RRS feed

  • Debate general

  • Hola buen dia para todos.. tengo la siguiente inquietud.....Tengo un solucion usando n capas y situandonos en la capa de persistencia de datos tengo la siguiente consulta..

      Public Function SeConsultanCategorias() As Object
            Dim tem = From e In Contexto.Categorias
                      Join a In Contexto.Subcategorias  On e.CodigoCategoria Equals a.CodigoSubcategoria
            Select e.CodigoCategoria , e.NombreCategoria, a.CodigoSubcategoria, a.NombreSubcategoria
            Return tem

        End Function
    Y necesito que la anterior consulta pase satisfactoriamente por WCF para comunicarse respectivamente con el cliente....pero el problema
     es que la estoy retornando tipo OBJECT por que no sabria de que otro tipo tendria que devolvera.. alguien me podria ayudar a decir de
     que tipo puedo devolver este tipo de consulta para que no hayan problemas al pasar por WCF y respectivamente lleguen al cliente ??? 



    martes, 15 de febrero de 2011 16:46

Todas las respuestas

  • Buenas,

    lo normal en estos casos es que tengas un proyecto o ensamblado que contenga el modelo de tu ORM. Créate una clase que contemple los campos de tu consulta y devuelves una List<Clase Implementada>.

    En la select de la consulta especificas un New ClaseImplemtada y le asignas los valores a los campos de la clase.


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin | MVP SharePoint Server
    martes, 15 de febrero de 2011 22:16
  • Hola Martin muchas gracias por la respuesta pero tengo la siguiente inquietud primero cree la clase con las mismas propiedades que contiene la entidad a la cual le voy a realizar la consulta


    Public Class MisDatos


        Private _CodigoCategoria As String
        Property CODCATEGO As String
            Get
                Return _CodigoCategoria
            End Get
            Set(ByVal value As String)
                _CodigoCategoria = value
            End Set
        End Property

        Private _NombreCategori As String
        Property NOMCATEGO As String
            Get
                Return _NombreCategori
            End Get
            Set(ByVal value As String)
                _NombreCategori = value
            End Set
        End Property

    End Class

    La entidad tiene como nombre Categorias
    y contiene dos propiedades
    su llave principal es CodigoCategoria
    y la otra propiedad es NombreCategoria

    Ahora realizo la consulta de la siguiente forma

       Public Function SeConsultanCategorias() As List(Of MisDatos)

          

            Dim MiDato As New MisDatos
            Dim Context As New INDIGOEntities
            Dim Busqueda As ObjectQuery(Of MisDatos) = From e In Context.Categorias
                       Select New With _
           { _
             .NombreCategoria = e.NombreCategoria, _
             .CodigoCategoria = e.CodigoCategoria _
     }
     

            Return Busqueda.ToList

        End Function
    pero me genera el siguiente error
    Unable to cast object of type 'System.Data.Objects.ObjectQuery`1[VB$AnonymousType_2`2[System.String,System.String]]' to type 'System.Data.Objects.ObjectQuery`1[Datos.MisDatos]'.

    Quisiera saber como realizar este tipo de consultas  y porque me genera este error....Muchas Gracias Alberto....


     


    Julian Andres Cardozo Flores
    martes, 15 de febrero de 2011 23:31
  • Hola Julian,

    cambia la declaración del New y especificale la clase con la que quieres hacer el New. Te pongo un ejemplo (siento c#)

    from p in datos
    select new MiClase {
      campo1 = p.Campo1,
      campo2 = p.Campo2
    }
    
    
    

    ¿me explico?

     


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin | MVP SharePoint Server
    miércoles, 16 de febrero de 2011 9:10