2013-05-15 8 views
6

czy ktoś wie, jak wyrazić filtr OData $ względem zagnieżdżonej nieruchomości?OData - filtr według zagnieżdżonej właściwości

za przykład. Mam następujący wpis Atom,

<entry> 
... 
<m:properties> 
... 
    <d:RegardingObjectId m:type="Microsoft.Crm.Sdk.Data.Services.EntityReference"> 
    <d:Id m:type="Edm.Guid">3f3712fd-fc49-e211-8eb8-000c296272c8</d:Id> 
    <d:LogicalName>new_sportsleague</d:LogicalName> 
    <d:Name>Boca</d:Name> 
    </d:RegardingObjectId> 

chcę odfiltrować tych wpisów, które mają RegardingObjectId/LogicalName eq 'new_sportsleague'.

Próbowano przy użyciu "RegardingObjectId/LogicalName" i "RegardingObjectId.LogicalName" bez powodzenia.

Odpowiedz

10

'RegardingObjectId/LogicalName' będzie prawidłową składnią.

Na przykład:

http://services.odata.org/v3/OData/OData.svc/Suppliers

powraca dwóch wyników, natomiast

http://services.odata.org/v3/OData/OData.svc/Suppliers $ filter = Adres/Ulica eq ne 228th "

wraca tylko jeden?.

Nie widzę miejsca w specyfikacji OData, które wyraźnie określa, czy filtrowanie przy użyciu właściwości złożonej wartości jest legalne, czy nie, ale wygląda na to, że obsługuje je usługa WCF Data Services. Możliwe, że inne implementacje OData tego nie robią.

+0

Masz rację Jen ... Wydaje się, że Dynamics CRM 2011 nie obsługuje takich zapytań. Podczas wykonywania zapytań przeciwko typowi złożonemu uzyskuję $ wyjątek {"Odwołanie do właściwości Nazwa_logiczna na typie złożonym EntityReference nie jest obsługiwane"} System.Exception {Microsoft.Crm.CrmNotSupportedException} :-( – Ariel

0

Użyj następujących OData przykład API, aby uzyskać dostęp do danych zagnieżdżonych właściwości filtracyjne

http://192.168.50.152:50086/odata/StationOperationLogs/?$expand=ProductionStation,ProductionStation/ProductionUnit&$filter=ProductionStation/ProductionUnit/Id eq 2