OK, så det finns flera saker som du behöver ändra för att det ska fungera:
-
Lägg till parameterlös konstruktor till Note eftersom det kommer att behövas för deserialisering:
public Note() { }
-
Bli av med "statisk" i Notes fält:
offentlig
statiskstring Client { get; uppsättning; }offentlig
statiskint Case { get; uppsättning; }offentlig
statisksträng Text { get; uppsättning; }offentlig
statiskint NoteId { get; uppsättning; }offentlig
statisksträng R1 { get; uppsättning; }offentlig
statisksträng R2 { get; uppsättning; }offentlig
statisksträng S1 { get; uppsättning; }offentlig
statiskDateTime Datum { get; uppsättning; }offentlig
statiskbool Typ { get; uppsättning; } -
Skicka inte JSON-array om du bara vill ha ett objekt, det kommer inte att deserialiseras. Du förväntar dig ett enda objekt, inte array, så skicka inte array.
-
Du har Typ som bool, men du skickar strängen "1", detta kommer inte att deserialiseras till sant värde som du kanske förväntade dig. Antingen skicka true/false (inte "true"/"false") eller ändra typ av typ till sträng.
-
Bli av med det privata objektfältet, du behöver det inte:
privat anteckningsobjekt; -
Bli av med de där konstruktörerna som du har där
public Note(string json)offentlig anteckning(anteckningsobjekt)Inte bara att de är meningslösa och inte fungerar, du behöver dem inte eftersom JSON-deserializer fyller fälten åt dig.
EDIT: Till exempel, du säger att det inte bygger eftersom det inte längre finns en konstruktor med en parameter. Naturligtvis bygger det inte, det finns den här linjen
Note notesdata = new Note(item);
men du behöver inte den linjen. Vad är tanken bakom denna linje? Du vill ha en instans av Note-klassen, men du har den redan i variabeln "objekt". Du behöver inte skapa en andra kopia av det. Så bli av med detta också.
En annan anledning till varför den inte kompilerar är att du blir av med de statiska fälten medan du fortfarande har det här i din Add-metod:
cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = Note.Text.Trim();
cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = Note.Date;
och jag är helt säker på att du inte vill det. Istället vill du använda instansen av objektet som skickades till dig:
cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = item.Text.Trim();
cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = item.Date;
En annan sak är att det vanligtvis inte finns någon anledning till varför Add-metoden skulle returnera objektet som läggs till i DB. Så ändra gärna detta
public Note Add(Note item)
till detta
public void Add(Note item)
och lämna inte tillbaka något, du behöver det inte.
Jag är ingen expert på SqlConnection och saker runt omkring, så den delen kommenterar jag inte. Jag använder EF i mina projekt för att arbeta med DB. Så det kan finnas några problem i den delen, men jag kan inte kommentera det.