我有一个使用EntityFramework for ORM的ASP.NET MVC 4 Web API应用程序。
在我返回的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”。有办法吗?
谢谢!
答案 0 :(得分:1)
一种简单的方法是编辑生成的实体类代码。对于每个实体类,将分配[DataContract(IsReference=true)]
属性。
如下所示:
[EdmEntityTypeAttribute(NamespaceName="YourNamespace", Name="YourEntity")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class YourEntity : EntityObject
{
将其更改为IsReference=false
。这应该可以解决问题。
答案 1 :(得分:0)
在我的情况下,我使用的是实体模型,我只是为.edmx图表表中的唯一字段设置了实体关键字。