ASP.NET MVC + Web API v3 ( OData ) Project Structure

ASP.NET MVC + Web API v3 ( OData ) Project Structure

   \App_Start\WebApiConfig.cs
 
   using System;
   using System.Web.Http;
   using System.Web.Http.OData.Builder;
 
   namespace ODataSoccer
   {
      public static class WebApiConfig
      {
         public static void Register(HttpConfiguration config)
         {
            ODataConventionModelBuilder builder;
 
            builder = new ODataConventionModelBuilder();
            builder.EntitySet<ODataSoccer.PLAYER_VIEW>("player");
            config.Routes.MapODataRoute("playerodata", "player", builder.GetEdmModel());
 
            builder = new ODataConventionModelBuilder();
            builder.EntitySet<ODataSoccer.LEAGUE_VIEW>("team");
            config.Routes.MapODataRoute("teamodata", "team", builder.GetEdmModel());
         }
      }
   }
 
   \Controllers\PlayerController.cs
 
   using System;
   using System.Linq;
   using System.Web.Http;
   using System.Web.Http.OData;
   using ODataSoccer;
 
   namespace ODataSoccer.Controllers
   {
      public class PlayerController : ODataController
      {
         private SoccerEntities db = new SoccerEntities();
 
         // GET odata/Player
         [Queryable]
         public IQueryable GetPlayer()
         {
            return db.PLAYER_VIEW;
         }
 
         // GET odata/Player(5)
         [Queryable]
         public SingleResult GetPLAYER_VIEW([FromODataUri] int key)
         {
            return SingleResult.Create(db.PLAYER_VIEW.Where(player_view => player_view.PLAYER_ID == key));
         }
      }
   }
 
 
   URL:
   http://<Host Name>/player/player
   http://<Host Name>/player/player(1)
 
   URL:
   http://<Host Name>/team/team
   http://<Host Name>/team/team(1)