I noticed that the use of $select seems to have a problem in that properties that are selected are serialized using POCO settings rather than whatever settings they may have using [DataMember] or [JsonProperty] from JSON.NET.
The impact is that if you get an object (with serialization attributes) without $select then it serializes one way but if you do $select then it serializes another. I assume this is the case for the OData formatter as well as I think the JSON formatter looks for [DataMember] attributes.
It looks like the issue is in the SelectExpandBinder which is created by the QuaryableAttribute – it picks the raw properties but none of the serialization attributes.
The impact is that if you get an object (with serialization attributes) without $select then it serializes one way but if you do $select then it serializes another. I assume this is the case for the OData formatter as well as I think the JSON formatter looks for [DataMember] attributes.
It looks like the issue is in the SelectExpandBinder which is created by the QuaryableAttribute – it picks the raw properties but none of the serialization attributes.