OK, takže je potřeba změnit několik věcí, aby to fungovalo:
-
Přidejte konstruktor bez parametrů do Note, protože bude potřeba pro deserializaci:
public Note() { }
-
Zbavte se "statické" v polích Note:
veřejné
statickéstring Client { get; soubor; }veřejné
statickéint Case { get; soubor; }veřejné
statickéstring Text { get; soubor; }veřejné
statickéint NoteId { get; soubor; }veřejné
statickéstring R1 { get; soubor; }veřejné
statickéstring R2 { get; soubor; }veřejné
statickéstring S1 { get; soubor; }veřejné
statickéDateTime Date { get; soubor; }veřejné
statickébool Type { get; soubor; } -
Pokud chcete pouze 1 objekt, neposílejte pole JSON, nebude deserializováno. Očekáváte jeden objekt, ne pole, takže pole neposílejte.
-
Máte Type as bool, ale posíláte řetězec "1", nebude to deserializováno na skutečnou hodnotu, jak byste očekávali. Buď odešlete true/false (nikoli "true"/"false") nebo změňte typ Type na řetězec.
-
Zbavte se toho pole soukromé položky, nepotřebujete ho:
soukromá položka poznámky; -
Zbavte se těch konstruktorů, které tam máte
veřejná poznámka (řetězec json)veřejná poznámka (položka poznámky)Nejen, že nedávají smysl a nebudou fungovat, ale ani je nepotřebujete, protože pole za vás vyplní deserializátor JSON.
UPRAVIT: Například říkáte, že se nesestaví, protože už neexistuje konstruktor s jedním parametrem. Samozřejmě se nestaví, existuje tato čára
Note notesdata = new Note(item);
ale ten řádek nepotřebuješ. Jaká je myšlenka za touto linií? Chcete instanci třídy Note, ale již ji máte v proměnné "item". Nemusíte vytvářet jeho druhou kopii. Tak se toho taky zbavte.
Dalším důvodem, proč se to nezkompiluje, je to, že se zbavíte těchto statických polí, když je stále máte v metodě Add:
cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = Note.Text.Trim();
cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = Note.Date;
a jsem si jistý, že to nechcete. Místo toho chcete použít instanci objektu, který vám byl zaslán:
cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = item.Text.Trim();
cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = item.Date;
Další věc je, že obvykle neexistuje žádný důvod, proč by metoda Add vracela objekt přidávaný do DB. Takže to klidně změňte
public Note Add(Note item)
k tomuto
public void Add(Note item)
a nic nevracejte, nepotřebujete to.
Nejsem odborník na SqlConnection a věci kolem toho, takže tuto část nekomentuji. EF používám ve svých projektech pro práci s DB. Takže v této části mohou být nějaké problémy, ale nemohu se k tomu vyjádřit.