Добре, значи има няколко неща, които трябва да промените, за да работи:
-
Добавете конструктор без параметри към бележката, тъй като ще е необходим за десериализация:
public Note() { }
-
Отървете се от „статичното“ в полетата на Note:
публичен
статиченstring Client { get; комплект; }публичен
статиченint Case { get; комплект; }публичен
статиченниз Текст { get; комплект; }публичен
статиченint NoteId { get; комплект; }публичен
статиченниз R1 { get; комплект; }публичен
статиченниз R2 { get; комплект; }публичен
статиченниз S1 { get; комплект; }публичен
статиченDateTime Дата { get; комплект; }публичен
статиченbool Тип { get; комплект; } -
Не изпращайте JSON масив, ако искате само 1 обект, той няма да се десериализира. Очаквате един обект, а не масив, така че не изпращайте масив.
-
Имате Type като bool, но изпращате низ "1", това няма да се десериализира до истинска стойност, както бихте очаквали. Или изпратете true/false (не "true"/"false") или променете типа на Type на string.
-
Отървете се от това поле за личен елемент, нямате нужда от него:
частна бележка; -
Отървете се от тези конструктори, които имате там
публична бележка (низ json)публична бележка (елемент от бележка)Не само, че нямат смисъл и няма да работят, нямате нужда от тях, тъй като десериализаторът на JSON ще попълни полетата вместо вас.
РЕДАКТИРАНЕ: Например, казвате, че не се изгражда, защото вече няма конструктор с един параметър. Разбира се, не се изгражда, има този ред
Note notesdata = new Note(item);
но нямате нужда от този ред. Каква е идеята зад тази линия? Искате екземпляр на клас Note, но вече го имате в променливата "item". Не е необходимо да създавате второ копие на това. Така че отървете се и от това.
Друга причина, поради която не се компилира, е, че се отървавате от тези статични полета, докато все още имате това във вашия метод за добавяне:
cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = Note.Text.Trim();
cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = Note.Date;
и съм напълно сигурен, че не искате това. Вместо това искате да използвате екземпляра на обекта, който ви е изпратен:
cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = item.Text.Trim();
cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = item.Date;
Друго нещо е, че обикновено няма причина методът Add да върне обекта, добавен към DB. Така че не се колебайте да промените това
public Note Add(Note item)
към това
public void Add(Note item)
и не връщайте нищо, не ви трябва.
Не съм експерт по SqlConnection и нещата около него, така че тази част не коментирам. Използвам EF в моите проекти за работа с DB. Така че може да има някои проблеми в тази част, но не мога да коментирам това.