How to address entity that uses composite identity key in OData Url?

ViktorZ picture ViktorZ · Sep 20, 2012 · Viewed 16.2k times · Source

I have an entity OrderItem that has OrderId and ProductId integer fields and these two fields form the identity key/primary key for this table.
I would like to use OData/Web API to expose such entities through a service and to be able to select OrderItem instances by they composite ID.

What should be the format of the URL?

Are there any best practices for handling such scenarios?

Answer

Vitek Karas MSFT picture Vitek Karas MSFT · Sep 20, 2012

Composite keys in the URL use syntax like this:

~/OrderItems(OrderId=1234,ProductId=1234)

The "grammar" is defined in the OData ABNF Construction Rules (see the definition for "compoundKey")

An example usage can be found in OASIS' OData Version 4.0. Part 2: URL Conventions Plus Errata 03

Note that the "composite key" (aka "complex key predicate") has been around since OData 1.0.