Ich bin seit einer Weile mit diesem fest und ich kann nicht scheinen, es herauszufinden. Schätze jede Hilfe!ASP.NET WebAPI 2 Nested JSON
Das ist mein Modell: http://www.jsoneditoronline.org/?id=9ee3466c40627f33c284e63544c8b8a7
ich die richtigen C# Objekte wie folgt aufgebaut:
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; }
}
ich POST
brauchen diese ganze JSON-Objekt direkt aus dem MVC-Controller. Bei anderen Gelegenheiten möchte ich PUT
den Zeitplan. Wie kann ich das richtig handhaben? Beispiele könnten wirklich helfen.
Danke!
Ich mache bereits das unten für POST
:
var schedule = JsonConvert.DeserializeObject<Schedule>(model.ToString());
Dies funktioniert wie jedoch zu erwarten, manchmal Media
Objekte im Zusammenhang gibt es bereits in der Datenbank und es verursacht einen internen Fehler Server, wenn sie versuchen, die INSERT
dasselbe Media
Objekt (welches bereits existiert) - Das [Key]
für Media
ist die hash
Eigenschaft.
Soweit ich verstehen kann, hat Ihr tatsächliches Problem nichts mit MVC oder JSON zu tun. Sie benötigen Hilfe, um Fehler bei der Primärschlüsselverletzung zu vermeiden. Ist das korrekt? –
@KosalaW Sort of yeah, das Ändern des Primärschlüssels in eine 'int id' löst dies. Aber das gleiche existierende 'Media'-Objekt in der Datenbank wurde erneut erstellt. Ich will keine Duplikate, wenn ich das Objekt bereits habe ... – user1027620
Bevor Sie 'Media' in Ihre Tabelle einfügen, müssen Sie also prüfen, ob das' Media' bereits in der Tabelle existiert. Wenn dies der Fall ist, aktualisieren Sie es, andernfalls einfügen. –