2012-06-28 46 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

相关问题