2013-05-01 8 views
5

Mam na myśli wykorzystanie OData do mojej usługi internetowej (w oparciu o Web API). Niestety moje źródło danych NIE jest IQueryable. Zamiast implementacji mojego własnego IQueryable podążałem za this blog post.OData bez IQueryable

Czego nie rozumiem, to jak dostać się do mojego modelu danych obiektu (EDM)? Czy muszę modelować EDM na przykład w Projektancie? Czy jest to tylko dla EF i mogę zamiast tego używać "zwykłych" klas i ustawiać atrybuty relacji? Nie chcę ujawniać moich wewnętrznych struktur danych, więc mój EDM jest bardziej podobny do DTO ...

W example Widziałem, że powinienem czerpać z EntitySetController w celu uzyskania zgodnego z OData HTTP odpowiedź. Wierzę, że nie mogę używać EntitySetController, ponieważ nie obsługuję IQueryable. Co powinienem zrobić, aby uzyskać właściwą odpowiedź?

Odpowiedz

4

Możesz samodzielnie zbudować model EDM. Możesz użyć klasy ODataConventionModelBuilder, aby zbudować swój model EDM. Ten tutorial ma pewien przykładowy kod. Również, sprawdź próbki na OData z here, szczególnie ODataServiceSample i ODataCompositeKeySample. Powinny cię zacząć.

Ponadto, jeśli nie masz IQueryable, możesz wyprowadzić z ODataController zamiast EntitySetController.