OK, quindi ci sono diverse cose che devi cambiare per farlo funzionare:
-
Aggiungi un costruttore senza parametri a Note poiché sarà necessario per la deserializzazione:
public Note() { }
-
Sbarazzarsi di "statico" nei campi di Note:
pubblico
staticostringa Cliente { get; impostare; }pubblico
staticoint Caso { ottenere; impostare; }pubblico
staticostringa Testo { get; impostare; }pubblico
staticoint IdNota { get; impostare; }pubblico
staticostringa R1 { ottenere; impostare; }pubblico
staticostringa R2 { ottenere; impostare; }pubblico
staticostringa S1 { ottenere; impostare; }pubblico
staticoDateTime Data { ottenere; impostare; }pubblico
staticobool Digita { get; impostare; } -
Non inviare array JSON se vuoi solo 1 oggetto, non verrà deserializzato. Ti aspetti un singolo oggetto, non un array, quindi non inviare array.
-
Hai Type come bool, ma stai inviando la stringa "1", questo non verrà deserializzato al valore true come potresti aspettarti. Invia true/false (non "true"/"false") o cambia il tipo di tipo in stringa.
-
Sbarazzati di quel campo dell'elemento privato, non ti serve:
elemento Nota privata; -
Sbarazzati di quei costruttori che hai lì
Nota pubblica(string json)Nota pubblica (elemento nota)Non solo non hanno senso e non funzionano, ma non ti servono perché il deserializzatore JSON riempirà i campi per te.
MODIFICA: Ad esempio, dici che non viene compilato perché non esiste più un costruttore con un parametro. Ovviamente non si costruisce, c'è questa linea
Note notesdata = new Note(item);
ma non hai bisogno di quella linea. Qual è l'idea alla base di questa linea? Vuoi un'istanza della classe Note, ma l'hai già nella variabile "item". Non è necessario crearne una seconda copia. Quindi sbarazzati anche di questo.
Un altro motivo per cui non verrà compilato è che ti sbarazzi di quei campi statici, mentre hai ancora questo nel tuo metodo Aggiungi:
cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = Note.Text.Trim();
cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = Note.Date;
e sono abbastanza sicuro che tu non lo desideri. Invece, vuoi usare l'istanza dell'oggetto che ti è stato inviato:
cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = item.Text.Trim();
cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = item.Date;
Un'altra cosa è che di solito non c'è motivo per cui il metodo Add restituisca l'oggetto aggiunto al DB. Quindi sentiti libero di cambiarlo
public Note Add(Note item)
a questo
public void Add(Note item)
e non restituire nulla, non ti serve.
Non sono un esperto di SqlConnection e cose che lo circondano, quindi quella parte non commento. Uso EF nei miei progetti per lavorare con DB. Quindi potrebbero esserci dei problemi in quella parte, ma non posso commentarlo.