none
Joins Personalizados con Code First RRS feed

  • Pregunta

  • Que tal, hace ya cerca de un año que estoy desarrollando con EF y tengo una duda a la que no pude encontrar respuesta en la web.

    Supongamos que tengo dos entidades, cabecera(TareaCab) e item(TareaItem), las cuales se relacionan a traves de una foreign key "TareaCabId", EF genera una query similar a esta:

    select *

    from TareaCab tc

    left Join TareaItem ti on tc.TareaCabId = ti.TareaCabId.

    Si yo queisiera agregar alguna clausula adicional al join como por ejemplo:

    select *

    from TareaCab tc

    left Join TareaItem ti on tc.TareaCabId = ti.TareaCabId and ti.Estado = "ACTIVO"

    hay alguna forma de hacer esto (en el include o a travez de data annotations) antes de que me carge la propiedad de navegacion con todos los items y yo posteriormente tenga que fitrar los que tengan estado ACTIVO?


    martes, 6 de enero de 2015 20:57

Todas las respuestas

  • hola

    lo primero que puedo ver es porque defines un left join si se supone que la relacion entre las tablas es de cabecera-detalle, para que crearias una cabecera que no tenga ningun item de detalle ?

    despues ten en cuanta que esta definiendo linq, esto no tiene porque ser identico a la notacion sql, en linq esta bien definir el where para filtrar por el estado activo

    o quizas define subqueries como ser

    var tareasActivas = context.TareaCab.Where(x=>x.Activo == "ACTIVO")
    
    var result = from tarea in tareasActivas
    
                     join item in context.TareaItems on tarea.TareaCabId equals item.TareaCabId
    
                     select ....;

    como veras defines una query que despues utilizas en otra, el resultado sera solo una query con la union de ambas

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 7 de enero de 2015 6:51