私はしばらくこのことに悩まされていました。助けをよろしく!私はPOST
にMVCコントローラから直接、この全体のJSONオブジェクトが必要ASP.NET WebAPI 2ネストされたJSON
public class Media
{
public string name { get; set; }
public string title { get; set; }
public string album { get; set; }
public string artist { get; set; }
public string length { get; set; }
public int bitrate { get; set; }
public double size { get; set; }
public string start_time { get; set; }
public string mimetype { get; set; }
public string hash { get; set; }
}
public class Playlist
{
public string name { get; set; }
public List<Media> media { get; set; }
public List<Graphics> graphics { get; set; }
public bool shuffle { get; set; }
public int volume { get; set; }
public string start_time { get; set; }
public string end_time { get; set; }
}
public class Day
{
public string name { get; set; }
public List<Playlist> playlists { get; set; }
}
public class Schedule
{
public List<Day> days { get; set; }
public string hash { get; set; }
}
:私はこのように設定し、適切なC#のオブジェクトを持ってhttp://www.jsoneditoronline.org/?id=9ee3466c40627f33c284e63544c8b8a7
:
は、これは私のモデルです。他の機会に私はPUT
スケジュールをしたいと思います。どのようにこれを適切に処理できますか?例が本当に役立つかもしれません。
ありがとうございます!
私はすでにPOST
については、以下をやってる:
var schedule = JsonConvert.DeserializeObject<Schedule>(model.ToString());
これが働いているが、予想通り、時には関連Media
オブジェクトが既にデータベースに存在し、INSERT
にしようとしたときには、内部サーバーエラーを引き起こしています同じMedia
オブジェクト(すでに存在します) - Media
の[Key]
はhash
プロパティです。
あなたの実際の問題はMVCまたはJSONとは関係ありません。主キー違反エラーを回避するには、いくつかの助けが必要です。あれは正しいですか? –
@KosalaW一種のええ、主キーを 'int id'に変更するとこれが解決されます。しかし、データベース内の同じ既存の 'Media'オブジェクトを再作成しました。私はすでにオブジェクトを持っているときに重複したくないです... – user1027620
あなたのテーブルに 'Media'を挿入する前に、' Media'が既にテーブルに存在するかどうかを確認する必要があります。存在する場合は更新し、そうでない場合は挿入します。 –