BKStart a conversation ↗

WebAPI OData DTO

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 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!