Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Masalah dengan layanan web RESTful + proyek prosedur tersimpan JSON + SQL

Oke, jadi ada beberapa hal yang perlu Anda ubah untuk membuatnya berfungsi:

  1. Tambahkan konstruktor tanpa parameter ke Note karena akan diperlukan untuk deserialisasi:

    public Note()
    {
    }
    
  2. Singkirkan "statis" di bidang Catatan:

    publik statis string Klien { dapatkan; mengatur; }

    publik statis int Kasus { dapatkan; mengatur; }

    publik statis string Teks { dapatkan; mengatur; }

    publik statis int NoteId { dapatkan; mengatur; }

    publik statis string R1 { dapatkan; mengatur; }

    publik statis string R2 { dapatkan; mengatur; }

    publik statis string S1 { dapatkan; mengatur; }

    publik statis DateTime Tanggal { dapatkan; mengatur; }

    publik statis bool Jenis { dapatkan; mengatur; }

  3. Jangan kirim array JSON jika Anda hanya menginginkan 1 objek, itu tidak akan deserialize. Anda mengharapkan objek tunggal, bukan array, jadi jangan kirim array.

  4. 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.

  5. Singkirkan bidang barang pribadi itu, Anda tidak membutuhkannya:

    item Catatan pribadi;

  6. 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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara meningkatkan kinerja untuk pemfilteran datetime di SQL Server?

  2. Bagaimana menghitung rata-rata bergerak selama n jam terakhir

  3. SQL Server perlu mempartisi data, tetapi hanya memiliki edisi standar

  4. Pivot dinamis T-SQL

  5. Linq to SQL DateTime nilai lokal (Jenis =Tidak ditentukan) - Bagaimana cara membuatnya UTC?