So I’ve started using OData in anger and pretty much immediately stumbled on a problem when using Data Transfer Objects (DTOs). This post explains that problem and the solution.
Problem
The following error is encountered when trying to access the exposed entity by key:
No routing convention was found to select an action for the OData path with template '~/entityset/key'.","type":""
Cause Code
OData configuration
Here I show the simple entity I’m exposing
Timesheet Controller
Here you can see that the underlying timesheets are just projected using Automapper to their DTO counterparts
Automapper config
Here I show the automapper configuration (not that it’s makes any difference to the problem encountered)
Solution
To fix this problem I needed to set the EntityType.Name property on my OData entity type.
And thereafter, success!