2013-05-15 12 views
6

qualcuno sa come esprimere un filtro $ OData contro una proprietà nidificata?OData - filtro per proprietà nidificata

per es. Ho la seguente voce 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> 

voglio filtrare per quelle voci che hanno RegardingObjectId/LogicalName eq 'new_sportsleague'.

Provato con 'RegardingObjectId/LogicalName' e 'RegardingObjectId.LogicalName' senza fortuna.

risposta

10

'RegardingObjectId/LogicalName' sarebbe la sintassi corretta.

Ad esempio:

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

restituisce due risultati, mentre

http://services.odata.org/v3/OData/OData.svc/Suppliers $ filter = Indirizzo/Via eq 'NE 228th'

restituisce solo uno?.

Non vedo un posto nella specifica OData che dichiari esplicitamente se il filtro che utilizza le proprietà di un valore complesso è legale o meno, ma sembra che i Servizi dati WCF lo supportano. Potrebbe essere che altre implementazioni OData no.

+0

Hai ragione Jen ... Sembra che Dynamics CRM 2011 non supporta tali query. Quando si esegue una query su un tipo complesso sto ricevendo $ exception {"Riferimento alla proprietà LogicalName sul tipo complesso EntityReference non supportato"} System.Exception {Microsoft.Crm.CrmNotSupportedException} :-( – Ariel

0

Usa seguente esempio API odata per accedere alle proprietà nidificate con i dati di filtro

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