9

ORM用のEntityFrameworkを使用するASP.NETMVC4WebAPIアプリがあります。

私が返す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 に答える