Brzmi to dość prosto (i może brakuje mi tutaj oczywistego), ale nie mogę znaleźć rozwiązania. Wiem, że mogę wysłać zapytanie do jednostki i zwrócić jedną lub wiele bezpośrednich jednostek podrzędnych, robiąc to:

var query = from c in Service.Clients.Expand("Addresses,Comments,PhoneNumbers")..

To, co chciałbym zrobić, to zrobić to samo z 3 poziomami (Dzieci dziecka), powiedzmy „Kraj->Prowincja->Miasto” lub „Marka->Rodzina->Model”

Próbowałem rozszerzyć wszystkie byty, ale to się nie udało

var query = from c in Service.Brands.Expand("Families,Models").. //fails,
//which even makes some sense, since Models is a Child of Family, not Brand
var query = from c in Service.Brands.Expand("Families").. //this works, 
//but Family.Models is empty

Czy można to zrobić w jednym zapytaniu, czy muszę podzielić to na dwa oddzielne zapytania?

24
Andreas 15 sierpień 2011, 23:44

2 odpowiedzi

Najlepsza odpowiedź

Poniższe oświadczenie powinno zwrócić to, czego szukasz:

var query = from c in Service.Brands.Expand("Families/Models")

Spowoduje to uruchomienie następującego zapytania odata:

.../OData.svc/Brands?$expand=Families/Models

Tu jest link do dalszej dokumentacji Odata:

Składnia opcji zapytania $expand to rozdzielona przecinkami lista właściwości nawigacji. Dodatkowo po każdej właściwości nawigacji może następować ukośnik i inna właściwość nawigacji, aby umożliwić identyfikację relacji wielopoziomowej.

31
Gene C 16 sierpień 2011, 00:22
Cholera, przeczytałem to ...ale odrzuciłem to dość szybko, ponieważ nie miałem pojęcia, co mają na myśli z "wykresem bytów" ... #$%$ Dziękuję bardzo za wskazanie mnie, Gene
 – 
Andreas
16 sierpień 2011, 06:45
Jak dokonujesz wyboru?
 – 
Leandro Bardelli
4 czerwiec 2014, 17:34