OK, il y a donc plusieurs choses que vous devez changer pour que cela fonctionne :
-
Ajoutez un constructeur sans paramètre à Note car il sera nécessaire pour la désérialisation :
public Note() { }
-
Débarrassez-vous du "statique" dans les champs de Note :
public
statiquechaîne Client { obtenir ; Positionner; }public
statiqueint Case { obtenir ; Positionner; }public
statiquechaîne Texte { obtenir ; Positionner; }public
statiqueint NoteId { obtenir ; Positionner; }public
statiquechaîne R1 { obtenir ; Positionner; }public
statiquechaîne R2 { obtenir ; Positionner; }public
statiquechaîne S1 { obtenir ; Positionner; }public
statiqueDateHeure Date { obtenir ; Positionner; }public
statiquebooléen Type { obtenir ; Positionner; } -
N'envoyez pas de tableau JSON si vous ne voulez qu'un seul objet, il ne se désérialisera pas. Vous attendez un objet unique, pas un tableau, donc n'envoyez pas de tableau.
-
Vous avez Type comme bool, mais vous envoyez la chaîne "1", cela ne se désérialisera pas en valeur vraie comme vous pourriez vous y attendre. Soit envoyer vrai/faux (et non "vrai"/"faux"), soit changer le type de Type en chaîne.
-
Débarrassez-vous de ce champ d'élément privé, vous n'en avez pas besoin :
élément de note privé ; -
Débarrassez-vous de ces constructeurs que vous avez là
Note publique (chaîne json)Note publique (élément de note)Non seulement ils n'ont aucun sens et ne fonctionneront pas, mais vous n'en avez pas besoin car le désérialiseur JSON remplira les champs pour vous.
MODIF : Par exemple, vous dites qu'il ne construit pas car il n'y a plus de constructeur avec un paramètre. Bien sûr, il ne construit pas, il y a cette ligne
Note notesdata = new Note(item);
mais vous n'avez pas besoin de cette ligne. Quelle est l'idée derrière cette ligne ? Vous voulez une instance de la classe Note, mais vous l'avez déjà dans la variable "item". Vous n'avez pas besoin d'en créer une deuxième copie. Alors débarrassez-vous de cela aussi.
Une autre raison pour laquelle il ne compilera pas est que vous vous débarrassez de ces champs statiques, alors que vous avez toujours ceci dans votre méthode Add :
cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = Note.Text.Trim();
cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = Note.Date;
et je suis sûr que vous ne voulez pas cela. À la place, vous souhaitez utiliser l'instance de l'objet qui vous a été envoyée :
cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = item.Text.Trim();
cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = item.Date;
Une autre chose est qu'il n'y a généralement aucune raison pour que la méthode Add renvoie l'objet ajouté à la base de données. Alors n'hésitez pas à changer cela
public Note Add(Note item)
à ça
public void Add(Note item)
et ne retournez rien, vous n'en avez pas besoin.
Je ne suis pas un expert de SqlConnection et des choses qui l'entourent, donc je ne commente pas cette partie. J'utilise EF dans mes projets pour travailler avec DB. Il peut donc y avoir des problèmes dans cette partie, mais je ne peux pas en parler.