0

これは私が昨日作成した投稿に関連していますが、解決できませんでした: ASP.Net Web API は VS で正しく表示されますが、HTTP500 を与えます

自分がやろうとしていることを単純化し、そこから取り組む必要があると思います。

親/子モデルから JSON を返すために、asp.net Web API (私は VS 2012 Express RC を使用しています) を使用する例を教えてください。

例: (疑似 Json):

Parent: Mark
..Child: Tom
..Child: Adam
..Child: Becki

Parent: Terry
..Child: Sophie
..Child: robert

リンクされたテーブルからではなく、1 つのテーブルからデータを返すようにできます。

助けてくれてありがとう、

マーク

4

2 に答える 2

1

これをなくすには2つの方法があります。

  1. 新しいテンプレート クラスを作成し、EF を使用して取得したリストをループして、テンプレート クラスで定義されたプロパティに値を割り当てます。これにより、1 つから複数のテーブル (存在する場合) から正確な結果が得られます。最後に、リストを json 呼び出しに返します。

  2. EF からリストを取得する際に、新しい匿名型を作成し、目的の列を選択します。このため、webmethod の戻り値の型は IEnumerable になります。

乾杯!

于 2012-06-06T11:15:31.657 に答える
0

元の投稿を見た後、私の推測では、オブジェクトに循環参照があります。この投稿では、クライアントに返される内容をより細かく制御できるJson.Netの使用について説明しています。

もう1つのオプションはtblCustomerBooking、オブジェクトから外部キー参照を削除することですtblRental(以下を参照)。

これにより、JSONオブジェクトを返し、循環参照が問題であることをテストできる場合があります。

[ForeignKey("customer_id")]
public virtual tblCustomerBooking tblCustomerBooking { get; set; }

ドメイン(つまりエンティティオブジェクト)を返すことを計画している場合は、Json.NETを使用することをお勧めします。これにより、すべての循環参照が回避され、双方向のオブジェクト関係を維持できるようになります。

私の個人的な好みは、DTOを使用し、ドメインオブジェクトをこれらのDTOにマップすることです。これにより、クライアントに表示される内容をより細かく制御できます(オブジェクト名に「tbl」プレフィックスを表示するのは適切ではないため)。

于 2012-06-06T15:08:51.720 に答える