Search code examples
urlentityodataasp.net-web-apicomposite-primary-key

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


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?


Solution

  • 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.