OK, also gibt es einige Dinge, die Sie ändern müssen, damit es funktioniert:
-
Parameterlosen Konstruktor zu Note hinzufügen, da er für die Deserialisierung benötigt wird:
public Note() { }
-
Befreien Sie sich von "statisch" in den Feldern von Note:
öffentlich
statischZeichenfolge Client { erhalten; einstellen; }öffentlich
statischint Fall { erhalten; einstellen; }öffentlich
statischZeichenfolge Text { erhalten; einstellen; }öffentlich
statischint NoteId { erhalten; einstellen; }öffentlich
statischZeichenfolge R1 { erhalten; einstellen; }öffentlich
statischZeichenfolge R2 { erhalten; einstellen; }öffentlich
statischZeichenfolge S1 { erhalten; einstellen; }öffentlich
statischDateTime Datum { erhalten; einstellen; }öffentlich
statischbool Typ { erhalten; einstellen; } -
Senden Sie kein JSON-Array, wenn Sie nur 1 Objekt möchten, es wird nicht deserialisiert. Sie erwarten ein einzelnes Objekt, kein Array, also senden Sie kein Array.
-
Sie haben Type as bool, aber Sie senden die Zeichenfolge „1“, dies wird nicht wie erwartet auf den wahren Wert deserialisiert. Senden Sie entweder wahr/falsch (nicht "wahr"/"falsch") oder ändern Sie den Typ von Type in string.
-
Befreien Sie sich von diesem privaten Elementfeld, Sie brauchen es nicht:
privates Notizelement; -
Befreien Sie sich von diesen Konstruktoren, die Sie dort haben
öffentliche Notiz (string json)öffentliche Notiz(Notizelement)Nicht nur, dass sie keinen Sinn machen und nicht funktionieren, Sie brauchen sie auch nicht, da der JSON-Deserializer die Felder für Sie ausfüllt.
BEARBEITEN: Sie sagen beispielsweise, dass es nicht erstellt wird, weil es keinen Konstruktor mit einem Parameter mehr gibt. Natürlich baut es nicht, da ist diese Zeile
Note notesdata = new Note(item);
aber Sie brauchen diese Zeile nicht. Was ist die Idee hinter dieser Linie? Sie möchten eine Instanz der Klasse Note, aber Sie haben sie bereits in der Variablen "item". Sie müssen davon keine zweite Kopie erstellen. Also werde auch das los.
Ein weiterer Grund, warum es nicht kompiliert wird, ist, dass Sie diese statischen Felder loswerden, während Sie dies noch in Ihrer Add-Methode haben:
cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = Note.Text.Trim();
cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = Note.Date;
und ich bin mir ziemlich sicher, dass du das nicht willst. Stattdessen möchten Sie die Instanz des Objekts verwenden, die Ihnen gesendet wurde:
cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = item.Text.Trim();
cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = item.Date;
Eine andere Sache ist, dass es normalerweise keinen Grund gibt, warum die Add-Methode das Objekt zurückgeben würde, das der DB hinzugefügt wird. Sie können dies also gerne ändern
public Note Add(Note item)
dazu
public void Add(Note item)
und gib nichts zurück, du brauchst es nicht.
Ich bin kein Experte für SqlConnection und Dinge drumherum, daher kommentiere ich diesen Teil nicht. Ich verwende EF in meinen Projekten für die Arbeit mit DB. Daher könnte es in diesem Teil einige Probleme geben, aber dazu kann ich nichts sagen.