2016-03-03 21 views
1

我一直在使用Web API OData控制器面臨Web API 2.2的問題。我正在做一個PoC,在這個PoC中我需要使用不同的列名顯示服務的JSON輸出,而不是相應的Model props(數據庫表列)。首先使用Web API的WebAPI實體框架數據庫OData控制器:模型屬性別名問題

(對於回:「公司名稱」,從客戶表應在我的服務的JSON輸出顯示爲「CNAME」)

我使用DB第一種方法與Northwind數據庫,創建了ADO.NET EF模型並使用OData EF創建了一個控制器。 (所有默認無需更改代碼到目前爲止)

現在,我已經嘗試使用以獲得不同的名稱

1)數據合同和數據成員 - >直接在模型類指定(是的,自動生成一個)

2)JsonProperty - >直接在模型類指定(是的,自動生成一個)

3)的DTO [它的工作原理,但我不希望使用的DTO]

不幸的是,第2種方式不工作對我來說(不知道我錯過了什麼這裏)和我試圖避免的DTO。 今天我一整天都被困在這裏,很感謝你能指點我一個正確的方法。

注意:如果我使用常規的Web API控制器,而不是OData控制器,那麼所有的工作。

回答

1

我意識到這是舊的,我不確定您使用的是哪個版本的OData,但簡單的答案是,您必須在模型構建器中指定所有這些信息。

下面是一個例子。

 var builder = new ODataConventionModelBuilder(); 
     var entity = builder.EntitySet<Model>("models").EntityType; 
     entity.Name = "model"; 
     entity.Property(p => p.Id).Name = "id"; 
     entity.Property(p => p.Name).Name = "name"; 
     entity.Property(p => p.Description).Name = "description"; 

祝你好運!

+0

如果您想要更簡單的方法來別名屬性,還可以使用DataContractSerializer屬性,例如我已經忘記的[DataMember(Name =「id」)],但是這樣起作用並且從開發角度來看更容易。 –

相關問題