Search code examples
c#entity-frameworkasp.net-web-apiodata

Why does oData V4 not order on datetime?


I've created a oData V4 endpoint with Web API 2.2 and Entity Framework. The model that is expose looks like the following model:

public class Items { 
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime CreatedOn { get; set; }
}

When I go to the URL: /odata/Items it works like a charm. But when I go to the URL: /odata/Items?$orderby=CreatedOn I get the following error:

'The specified type member 'Kind' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.'


Solution

  • OData v4 doesn't suport DateTime type. You should use DateTimeOffset instead. That's because of problems that can happen if you don't specify the time zone. In fact there is an open discussion if it shuld be supported or not.

    Please, see this references:

    If you check those issues, you'll find that support for DateTime has been added to version 5.6.0 beta 1.