Search This Blog

Monday, June 6, 2016

How to access derived (inherited) objects from OData Service

I want to quote a new KB article we created to more easily answer such user questions, especially due to the increased interest in OData in light of the recent arrival of the XAF mobile UI (CTP)

"I created an XPO OData service (XpoDataServiceV3) based on my model, but when I try to query a collection of objects that are derived from another persistent object, the result set includes all objects inherited from the base class. Is it a bug? How can I get only derived objects?"

"This behavior is caused by limited support for derived objects in the OData protocol, which doesn't expose derived classes as entity sets. To access derived objects or their properties, you have to include a type cast using the qualified object type name in the path constructed for a base class. For example, if you wish to get Person objects that are inherited from Party, use the following query:


Please refer to Derived Entity Type section of the OData Advanced Tutorial and Addressing Derived Types section of the OData protocol documentation for more examples.

Note that this specificity is not related to XPO. If you create a WCF Data Service based on an Entity Framework model, it will behave in a similar manner in regard to derived entities."

And here is a real-life URL query I tested with the data service I created with our MainDemo app and the new Mobile project template:


Again, take special note that this is however, NOT specific to XAF itself or DevExpress ORM OData Service in any way, but rather to the OData V3 protocol itself.

Wednesday, June 1, 2016

How to: Use DevExtreme Widgets in an XAF Application (New KB Article and Example)

I wanted to advertise the new XAF learning materials we have just published for the v15.2.10 version we released today:

T381904: How to display the dxChart widget in an XAF  view (KB Article)
T380965: How to: Use DevExtreme Widgets in an XAF Application (Code Example)

We have been using a similar approach in our Web ReportsV2 and Maps modules, and I hope you find this documentation helpful as well.

As always, my team and I look forward to hearing your thoughts on each of these improvements in comments to this blog or via the service.