Oke, jadi ada beberapa hal yang perlu Anda ubah untuk membuatnya berfungsi:
-
Tambahkan konstruktor tanpa parameter ke Note karena akan diperlukan untuk deserialisasi:
public Note() { }
-
Singkirkan "statis" di bidang Catatan:
publik
statisstring Klien { dapatkan; mengatur; }publik
statisint Kasus { dapatkan; mengatur; }publik
statisstring Teks { dapatkan; mengatur; }publik
statisint NoteId { dapatkan; mengatur; }publik
statisstring R1 { dapatkan; mengatur; }publik
statisstring R2 { dapatkan; mengatur; }publik
statisstring S1 { dapatkan; mengatur; }publik
statisDateTime Tanggal { dapatkan; mengatur; }publik
statisbool Jenis { dapatkan; mengatur; } -
Jangan kirim array JSON jika Anda hanya menginginkan 1 objek, itu tidak akan deserialize. Anda mengharapkan objek tunggal, bukan array, jadi jangan kirim array.
-
Anda memiliki Ketik sebagai bool, tetapi Anda mengirim string "1", ini tidak akan deserialize ke nilai sebenarnya seperti yang Anda harapkan. Kirim true/false (bukan "true"/"false") atau ubah tipe Type menjadi string.
-
Singkirkan bidang barang pribadi itu, Anda tidak membutuhkannya:
item Catatan pribadi; -
Singkirkan konstruktor yang Anda miliki di sana
Catatan publik(string json)Catatan publik(Item catatan)Tidak hanya itu tidak masuk akal dan tidak akan berfungsi, Anda juga tidak membutuhkannya karena deserializer JSON akan mengisi kolom untuk Anda.
EDIT: Misalnya, Anda mengatakan itu tidak membangun karena tidak ada lagi konstruktor dengan satu parameter. Tentu saja tidak membangun, ada baris ini
Note notesdata = new Note(item);
tetapi Anda tidak membutuhkan garis itu. Apa ide di balik garis ini? Anda menginginkan instance kelas Note, tetapi Anda sudah memilikinya di variabel "item". Anda tidak perlu membuat salinan kedua dari itu. Jadi singkirkan ini juga.
Alasan lain, mengapa itu tidak dapat dikompilasi adalah karena Anda menyingkirkan bidang statis tersebut, sementara Anda masih memiliki ini dalam metode Tambahkan:
cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = Note.Text.Trim();
cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = Note.Date;
dan saya yakin Anda tidak menginginkan itu. Sebagai gantinya, Anda ingin menggunakan instance objek yang dikirimkan kepada Anda:
cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = item.Text.Trim();
cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = item.Date;
Hal lain adalah bahwa biasanya tidak ada alasan mengapa metode Add mengembalikan objek yang ditambahkan ke DB. Jadi jangan ragu untuk mengubahnya
public Note Add(Note item)
untuk ini
public void Add(Note item)
dan tidak mengembalikan apa pun, Anda tidak membutuhkannya.
Saya bukan ahli SqlConnection dan hal-hal di sekitarnya, jadi bagian itu tidak saya komentari. Saya menggunakan EF dalam proyek saya untuk bekerja dengan DB. Jadi mungkin ada beberapa masalah di bagian itu, tapi saya tidak bisa mengomentari itu.