2012-06-28 43 views
7

我有一個ASP.NET MVC 4 Web API應用程序使用EntityFramework for ORM。

在我返回的JSON中,有些情況下多個父節點存在相同的子節點。在這些情況下,第一次出現的子節點對其所有成員都是完全可見的。任何後續事件都會顯示爲第一次出現的$ ref。 我希望每次在返回的JSON中顯示完整對象。

例如,而不是看到:

[{ 
    "$id": "1", 
    "userId": 1, 
    "Badge": { 
     "$id": "2", 
     "badgeId": 1, 
     "badgeName": "Gold" 
     } 
    }, { 
    "$id": "3", 
    "userId": 2, 
    "Badge": { 
     "$ref": "2" 
     } 
    }] 

我想看到的:

[{ 
    "$id": "1", 
    "userId": 1, 
    "Badge": { 
     "$id": "2", 
     "badgeId": 1, 
     "badgeName": "Gold" 
     } 
    }, { 
    "$id": "3", 
    "userId": 2, 
    "Badge": { 
     "$id": "4", 
     "badgeId": 1, 
     "badgeName": "Gold" 
     } 
    }] 

基本上我想擺脫在JSON任何 「$ REF」 的。有沒有辦法?

謝謝!

回答

1

一個簡單的方法是編輯生成的實體類代碼。對於每個實體類,將會分配一個[DataContract(IsReference=true)]屬性。

類似以下內容:

[EdmEntityTypeAttribute(NamespaceName="YourNamespace", Name="YourEntity")] 
[Serializable()] 
[DataContractAttribute(IsReference=true)] 
public partial class YourEntity : EntityObject 
{ 

將其更改爲IsReference=false。這應該夠了吧。

+0

對不起,它讓我永遠需要回應。我不知道有答案。我當時使用的解決方法是在返回之前將對象的一些成員顯式設置爲在web服務中爲null。我也會給這個解決方案一個鏡頭。謝謝! – niltoid

+0

有沒有辦法用流利的API而不是屬性來做到這一點? – BlackICE

相關問題