C#MVC4 Web API-生成的JSON应该返回对象,而不是$ref到对象
我有一个ASP.NET MVC 4 Web API应用程序,使用EntityFramework for ORM 在JSON I返回中,在某些情况下,多个父节点存在相同的子节点。在这些情况下,子节点的第一次出现对其所有成员都是完全可见的。任何后续事件都显示为第一个事件的$ref。 相反,我希望每次在返回的JSON中显示完整对象时都能看到它 例如,不要看到:C#MVC4 Web API-生成的JSON应该返回对象,而不是$ref到对象,json,asp.net-mvc-4,asp.net-web-api,ref,Json,Asp.net Mvc 4,Asp.net Web Api,Ref,我有一个ASP.NET MVC 4 Web API应用程序,使用EntityFramework for ORM 在JSON I返回中,在某些情况下,多个父节点存在相同的子节点。在这些情况下,子节点的第一次出现对其所有成员都是完全可见的。任何后续事件都显示为第一个事件的$ref。 相反,我希望每次在返回的JSON中显示完整对象时都能看到它 例如,不要看到: [{ "$id": "1", "userId": 1, "Badge": { "$id": "
[{
"$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”。有办法吗
谢谢 一种简单的方法是编辑生成的实体类代码。对于每个实体类,将分配一个
[DataContract(IsReference=true)]
属性
如下所示:
[EdmEntityTypeAttribute(NamespaceName="YourNamespace", Name="YourEntity")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class YourEntity : EntityObject
{
将其更改为
IsReference=false
。这应该可以解决问题。在我的例子中,我使用的是实体模型,我只需在.edmx图表表中为唯一字段设置一个实体键。很抱歉,我花了很长时间才做出响应。我不知道有答案。当时我采用的解决方法是在返回对象之前,在webservice中将对象的某些成员显式设置为null。我也会尝试一下这个解决方案。谢谢有没有办法用fluent API而不是属性来实现这一点?