9

我有一个使用 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”。有办法吗?

谢谢!

4

2 回答 2

1

一种简单的方法是编辑生成的实体类代码。对于每个实体类,都会[DataContract(IsReference=true)]分配一个属性。

类似于以下内容:

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

将其更改为IsReference=false. 这应该够了吧。

于 2012-07-28T05:32:00.060 回答
0

在我的例子中,我使用的是实体模型,我只是为我的 .edmx 图表表中的一个唯一字段设置了一个实体键。

于 2020-07-28T08:53:19.957 回答