Bien, hay varias cosas que debes cambiar para que funcione:
-
Agregue un constructor sin parámetros a Note, ya que será necesario para la deserialización:
public Note() { }
-
Deshágase de "estático" en los campos de Nota:
público
estáticocadena Cliente { obtener; establecer;público
estáticoint Caso { obtener; establecer;público
estáticocadena Texto { obtener; establecer;público
estáticoint NoteId { obtener; establecer;público
estáticocadena R1 { obtener; establecer;público
estáticocadena R2 { obtener; establecer;público
estáticocadena S1 { obtener; establecer;público
estáticoFechaHora Fecha { obtener; establecer;público
estáticobool Tipo { obtener; establecer; -
No envíe una matriz JSON si desea solo 1 objeto, no se deserializará. Está esperando un solo objeto, no una matriz, así que no envíe una matriz.
-
Tiene Type como bool, pero está enviando la cadena "1", esto no se deserializará al valor verdadero como podría esperar. Envíe verdadero/falso (no "verdadero"/"falso") o cambie el tipo de Tipo a cadena.
-
Deshazte de ese campo de elemento privado, no lo necesitas:
elemento de nota privada; -
Deshazte de esos constructores que tienes ahí
nota pública (cadena json)nota pública (elemento de nota)No solo no tienen sentido y no funcionarán, sino que no los necesita, ya que el deserializador JSON llenará los campos por usted.
EDITAR: Por ejemplo, dices que no construye porque ya no hay un constructor con un parámetro. Por supuesto que no construye, existe esta línea
Note notesdata = new Note(item);
pero usted no necesita esa línea. ¿Cuál es la idea detrás de esta línea? Desea una instancia de la clase Note, pero ya la tiene en la variable "elemento". No necesita crear una segunda copia de eso. Así que deshazte de esto también.
Otra razón por la que no compilará es que se deshace de esos campos estáticos, mientras todavía tiene esto en su método Add:
cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = Note.Text.Trim();
cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = Note.Date;
y estoy bastante seguro de que no quieres eso. En su lugar, desea utilizar la instancia del objeto que se le envió:
cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = item.Text.Trim();
cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = item.Date;
Otra cosa es que, por lo general, no hay ninguna razón por la que el método Agregar devuelva el objeto que se agrega a la base de datos. Así que siéntete libre de cambiar esto
public Note Add(Note item)
a esto
public void Add(Note item)
y no devuelvas nada, no lo necesitas.
No soy un experto en SqlConnection y cosas a su alrededor, por lo que no comento esa parte. Uso EF en mis proyectos para trabajar con DB. Así que puede haber algunos problemas en esa parte, pero no puedo comentar al respecto.