2013-03-25 54 views
2

我使用新的2012.2 OData東西(Microsoft ASP.NET Web API OData)並遵循基本示例。我有一個非常基本的POCO和其正「神奇」在/ OData的通過我的MVC網站曝光:WebApi OData元數據/說明

ODataModelBuilder modelBuilder = new ODataConventionModelBuilder(); 
modelBuilder.EntitySet<Job>("Products"); 

Microsoft.Data.Edm.IEdmModel model = modelBuilder.GetEdmModel(); 
config.Routes.MapODataRoute("ODataRoute", "odata", model); 

這似乎神奇的電纜鋪設工作的OData「服務」的描述文件,並調用它很好地格式化我的產品控制器作爲ATOM。

我的問題與POCO,描述和元數據有關。這裏有太多的魔力,我不知道在哪裏找到文檔。我想能夠:

  • 爲我的實體「說明」屬性(Excel的2013年數據連接嚮導中顯示此)

  • 覆蓋我的POCO的類名與用戶友好名稱。作爲獎勵,讓我動態地設置這個動態。

我真的不知道什麼是生成「/odata/magic.svc」的文件,所以我不知道如何找到它的文檔。這是WebApi,OData,EntityFramework嗎?

謝謝!

回答

4

沒有生成magic.svc。您已完成構建OData服務所需的3個步驟。有關詳細信息,請參閱此tutorial和此博客post

你這麼做的時候,

DataModelBuilder modelBuilder = new ODataConventionModelBuilder(); 
modelBuilder.EntitySet<Job>("Products"); 
Microsoft.Data.Edm.IEdmModel model = modelBuilder.GetEdmModel(); 

你已經建立了EDM model爲您OData服務。

你這麼做的時候,

config.Routes.MapODataRoute("ODataRoute", "odata", model); 

您使用您剛剛建立的服務模式,告訴網絡API在〜/的OData /(第二個參數)暴露OData服務。

而當您試圖獲取url〜/ odata/Products時,您添加的OData路由知道您正在嘗試訪問Products實體集並將其路由到ProductsController。我將嘗試撰寫關於ODataConventionModelBuilder使用的約定和默認OData路由約定的博客文章。

而關於其它兩個問題,

1)是外的現成沒有用於提供原子的元數據的支持。但是,您可以通過使用向OData格式化程序添加可擴展性點的夜間刪除來覆蓋原子元數據。有關詳細信息,請參閱此answer

2)我們現在不支持別名。所以,那裏沒有運氣。這是我們未來計劃中的首要項目之一。

+0

非常感謝 – ProVega 2013-03-28 22:14:50