There is an unsaved comment in progress. You will lose your changes if you continue. Are you sure you want to reopen the work item?
Queryable on Class validates all methods must be IEnumerable etc. This is not valid logic
Right now if you put the queryable attribute on a class it throws on Get(int ID) that returns a single object.
This is patently silly and must be removed. It is absolutely valid to put [Queryable] on a controller and have single item responses in it. Obviously you should SKIP processing any odata commands on methods that return a single object, or you can feel free to throw if there are odata $ commands on a call to a single object response. But if there are no $ commands then it should not throw.
The way it is right now you couldn't put it on an entire class without it being guaranteed to break.
In general I continue to be shocked and amazed by how little understanding of how Web API is going to be used. This isn't the first time I've slapped my head at the silliness of the implementations that are being checked in. It's especially bad when it comes to OData for some reason. You guys really need to figure out your use cases WAY better because if you continue down this path Web API is going to continue to be as useless as V1 was and the old Microsoft gets it right on V3 adage is going to hold true.