none
Duda en consulta en entidades relacionadas RRS feed

  • Pregunta

  • Hola,

    tengo una serie de entidades relacionadas, obtenidas con db First que son:

    Una entidad principal PROVEEDORES que tiene asociadas las entidades CATALOGOS, FACTURAS (esta a su vez tiene asociada LINEAS_FACTURA) y RELACION_PROVEEDOR_DELEGACION. Todas tienen definida la clave primaria por un campo ID autonumérico.

    La entidad RELACION_PROVEEDOR_DELEGACION tiene los campos IDproveeror e IDdelegacion y representa una relación Uno a Muchos.

    Lo que yo necesito es recuperar todos los PROVEEDORES con sus CATALOGOS y FACTURAS pertenecientes a una Delegación concreta.

    No se como en el where acceder a RELACION_PROVEEDOR_DELEGACION.IDdelegación = xx

    Desde ya agradezco la ayuda que me puedan brindar.


    • Editado weatherby miércoles, 10 de diciembre de 2014 11:37 corrección
    miércoles, 10 de diciembre de 2014 11:14

Respuestas

  • si es coleccion de coleccion se usa

    var result = context.Proveedores
                        .Include(x=>x.Catalogos)
                        .Include(x=> x.Facturas).Include(x=> x.Facturas.Select(y=>y.Lineas_Factura))
                        .Where(x=>x.Delegaciones.Any(y=>y.IDdelegacion == valor));

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta weatherby miércoles, 10 de diciembre de 2014 15:53
    miércoles, 10 de diciembre de 2014 15:26

Todas las respuestas

  • hola

    pero la entidad proveedores no tienes propiedades de navegacion a esas entidades ? no tiene una propiedad Catalogos y Facturas ?

    porque podrias hacer

    var result = context.Proveedores
                        .Include(x=>x.Catalogos)
                        .Include(x=> x.Facturas)
                        .Where(x=>x.Delegaciones.Any(y=>y.IDdelegacion == valor));

    como veras las delegaciones son una coleccion, entonces preguntas si algun proveedor tiene alguna relacion con la delegacion que buscas

    los include esta bueno definirlos asi no usas lazy load si ya sabes que vas a trabjar con esa informacion de catalogos y facturas

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 10 de diciembre de 2014 11:39
  • Hola Leandro,

    sí, la entidad PROVEEDORES tiene propiedades de navegación a sus entidades relacionadas.

    Con el ejemplo que me pones va "casi" bien, ya que no me carga las líneas de las facturas.

    La entidad FACTURAS tiene una propiedad de navegación hacia LINEAS_FACTURA

    He probado a poner un include para LINEAS_FACTURA pero entonces, aunque no me da error, no puedo acceder a los datos.

    miércoles, 10 de diciembre de 2014 14:28
  • si es coleccion de coleccion se usa

    var result = context.Proveedores
                        .Include(x=>x.Catalogos)
                        .Include(x=> x.Facturas).Include(x=> x.Facturas.Select(y=>y.Lineas_Factura))
                        .Where(x=>x.Delegaciones.Any(y=>y.IDdelegacion == valor));

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta weatherby miércoles, 10 de diciembre de 2014 15:53
    miércoles, 10 de diciembre de 2014 15:26
  • Muchas gracias.
    miércoles, 10 de diciembre de 2014 15:53