Od wczoraj męczy mnie pewne proste zagadnienie, mianowicie chciałbym pobrać z bazy danych obiekt, który jest reprezentowany w relacji wiele do wiele. Łącznie mam trzy tabelki, Delegation, DelegationToPerson oraz Person. W wyniku mojego zapytania oczekuję jednego obiektu Delegation (o konkretnym id_delegation), który będzie w sobie zawierał listę obiektów DelegationToPerson.
Moje zapytanie wygląda następująco:
db.Delegation.Include(dtp => dtp.DelegationToPerson.Select(s => s.Person)).FirstOrDefault(del => del.id == delegationId);
Mój problem polega na tym, że osoba mogła zostać usunięta z delegacji, tzn w tabeli korelacyjnej ma postawioną flagę is_deleted i właśnie tak chciałbym przefiltrować obiekt DelegateToPerson. W TSQL wygląda to następująco:
SELECT *
FROM Delegation AS d
INNER JOIN DelegationToPerson AS dtp on dtp.id_delegation = d.id
INNER JOIN Person AS p on dtp.id_person = p.id
WHERE
p.is_deleted = 0 AND
dtp.is_deleted = 0 AND
dtp.id_delegation = 55
Dodatkowo, zdałem sobie również sprawę, że oprócz usuniętych powiązań użytkownika oraz delegacji muszę też odfiltrować ewentualnie usuniętych użytkowników (Person -> is_deleted).
Z góry dziękuję za pomoc!