Praveen Prasannan
Praveen Prasannan

Reputation: 7123

Filter on Expanded entities in OData

How to apply filtering conditions on expanded entities in OData ?

Suppose I have master entity as home having fields

homeId, StateId, CountyID, Address

and sub entities state as

StateId, StateName

and county as

CountyID, CountyName

I need to get the home addresses and Ids with a filter condition with state name and county name. How should be the url?

Upvotes: 3

Views: 6101

Answers (3)

ePascoal
ePascoal

Reputation: 2442

I have the same issue and i use the relational schema that links the two entities but even so only primary keys of expanded entity can be filtered or selected. I don't know how to call a diferent field that's not a primary key. See the following question: Question

Upvotes: 0

Jen S
Jen S

Reputation: 4555

I suspect your home entity type doesn't actually have navigation properties on it. In OData, if you want to connect two entities, you would create a property whose type matches the entity you want to link to. These properties (i.e., properties whose type is an entity type) are called navigation properties. If you want home to have an associated state, your home type would have a property called "State" or something like that, and that property would be of type state. Think of object-oriented programming instead of join-able IDs you would use in a relational database.

Similarly, home should have a property with type county if you want to connect a home entity to a county entity. Once you have navigation properties called "state" and "county", eoghank's answer should work for you.

Upvotes: 0

eoghank
eoghank

Reputation: 1043

Using the $expand keyword OData query should be something like:

/home/?$filter=state/statename eq 'STATE' and county/countyname eq 'COUNTY'&$expand=state,county&$select=homeId, Address

Upvotes: 1

Related Questions