Mam tabelę NxN, wyobraź sobie:LINQ podmiotom Dołącz + Gdzie Metoda
Użytkownika (id, ...) < - UserAddresses (id, USERID addressId, włączona, ...) -> Adresy (Id , ...)
UserAddresses zawiera FK do użytkownika i adresu. Co wiem, Entity utworzone przez Entity Framework User, zawiera kolekcję dla UserAddresses. Adres zawiera kolekcję do UserAddresses, a określony adres użytkownika zawiera jedno refenrece do użytkownika i do jednego adresu.
Teraz chcę zrobić następne zapytanie linq. Dla określonego identyfikatora użytkownika, tylko userAddresses z włączoną flagą ustawioną na true. Dla określonego identyfikatora użytkownika, userAddresses może zawierać wiele wpisów, ale tylko jeden jest ustawiony dla tego konkretnego użytkownika.
Zapytanie mogę zrobić, to:
context.User.Include(x => x.UserAddresses)
.Include(x => x.UserAddresses.Select(y => y.Address))
.Single(x => x.id == USER_ID)
ale to, co naprawdę chcę to nie załadować wszystkie UserAddresses dla tego użytkownika ... Tylko jeden, który zawiera aktywne, setted PRAWDA!
Ktoś może mi pomóc w wykonaniu tego zapytania?
Jakiego rodzaju "Uwzględnij" używasz? O ile mi wiadomo, metoda 'Include' z' System.Data.Objects.ObjectQuery' otrzymuje tylko 1 argument ciągu znaków? –
@KingKing Zrobiłem metodę rozszerzenia, która formatuje wyrażenie lambda na string i przekazuje je do "natywnej" metody ObjectQuery include. – anotherNeo
Jeśli tak, odpowiedź na twój problem jest "niemożliwe", "Uwzględnij" nie jest tak potężny, nie można wykonać żadnego "filtra" przed włączeniem. –