Search code examples
c#odataasp.net-web-api2

Web API OData EnableLowerCamelCase


I have a Web API 2 application using OData and I need to expose the model properties in lower camel case as they are being serialized.

There is a EnableLowerCamelCase method that appears to do this but I can't get it to be recognized by the compiler. There is even a sample on CodePlex using OData 6.5.0 that shows EnableLowerCamelCase.

ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EnableLowerCamelCase(); // <-- this won't compile

Has EnableLowerCamelCase been removed? What am I missing?

I am using the following package versions:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Antlr" version="3.5.0.2" targetFramework="net45" />
  <package id="elmah" version="1.2.2" targetFramework="net45" />
  <package id="elmah.corelibrary" version="1.2.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.Mvc" version="5.2.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.OData" version="5.3.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.Razor" version="3.2.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi" version="5.2.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebPages" version="3.2.0" targetFramework="net45" />
  <package id="Microsoft.OData.Core" version="6.8.0" targetFramework="net45" />
  <package id="Microsoft.OData.Edm" version="6.8.0" targetFramework="net45" />
  <package id="Microsoft.Spatial" version="6.8.0" targetFramework="net45" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="6.0.5" targetFramework="net45" />
</packages>

Solution

  • Simply change

    ODataModelBuilder builder = new ODataConventionModelBuilder();
    

    to

    ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
    

    or

    var builder = new ODataConventionModelBuilder();
    

    and it should compile. I tested it using the latest ASP.NET Web API 2.2 for OData v4.0 (v5.3.1).