web-dev-qa-db-fra.com

odata - combinant $ expand et $ select

Dans odata v4.0, existe-t-il une option pour combiner $ expand et $ select ensemble? 

J'ai un scénario dans lequel j'essaie d'obtenir des colonnes spécifiques dans productItemChoices et item. La requête ci-dessous vous donnera tous les colonnes dans productItemChoices. Je n'ai besoin que d'une colonne dans le productItemChoices

odata/Products(08f80b45-68a9-4a9f-a516-556e69e6bd58)?$expand=productItemChoices($expand=item($select=name))
15
pranag

Après avoir passé beaucoup de temps là-dessus, j'ai finalement eu la réponse. Nous pouvons imbriquer select dans expand en utilisant ; comme séparateur, quelque chose comme:

odata/Products(8)?$expand=choices($select=col1,col2;$expand=item($select=name))

Ceci est documenté dans OData v4 $expand documentation . La documentation répertorie également d’autres exemples utiles tels que

Categories?$expand=Products($filter=DiscontinuedDate eq null)
Categories?$expand=Products/$count($search=blue)
29
pranag

dans la sélection, vous pouvez utiliser l'entité/l'attribut pour sélectionner des attributs spécifiques d'entités développées:

$select=productItemChoices/columnyouwant

Je ne suis pas sûr des relations entre les entités de votre requête. Lors de l’expansion en profondeur, j’ai utilisé la syntaxe suivante (sans les parenthèses) - Dans ce qui suit, je suppose que les produits concernent p 

$expand=productItemChoices, productItemChoices/item

Ensuite, pour sélectionner

$select=productItemChoices/productItemChoicesGuid, productItemChoices/item/name

Évidemment, si les relations sont différentes, vous devrez en changer

1
snow_FFFFFF