Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

रीस्टफुल webservice + JSON + SQL संग्रहीत कार्यविधि प्रोजेक्ट के साथ समस्या

ठीक है, इसलिए इसे काम करने के लिए आपको कई चीज़ें बदलने की ज़रूरत है:

  1. नोट में पैरामीटर रहित कंस्ट्रक्टर जोड़ें क्योंकि इसे डीरियलाइज़ेशन के लिए आवश्यक होगा:

    public Note()
    {
    }
    
  2. नोट के क्षेत्रों में "स्थिर" से छुटकारा पाएं:

    सार्वजनिक स्थिर स्ट्रिंग क्लाइंट {प्राप्त करें; समूह; }

    सार्वजनिक स्थिर इंट केस {प्राप्त करें; समूह; }

    सार्वजनिक स्थिर स्ट्रिंग टेक्स्ट {प्राप्त करें; समूह; }

    सार्वजनिक स्थिर इंट नोटआईड {प्राप्त करें; समूह; }

    सार्वजनिक स्थिर स्ट्रिंग आर 1 {प्राप्त करें; समूह; }

    सार्वजनिक स्थिर स्ट्रिंग आर 2 {प्राप्त करें; समूह; }

    सार्वजनिक स्थिर स्ट्रिंग S1 {प्राप्त करें; समूह; }

    सार्वजनिक स्थिर दिनांक समय दिनांक {प्राप्त करें; समूह; }

    सार्वजनिक स्थिर बूल प्रकार {प्राप्त करें; समूह; }

  3. यदि आप केवल 1 ऑब्जेक्ट चाहते हैं तो JSON सरणी न भेजें, यह deserialize नहीं होगा। आप एकल वस्तु की अपेक्षा कर रहे हैं, सरणी की नहीं, इसलिए सरणी न भेजें।

  4. आपके पास बूल के रूप में टाइप है, लेकिन आप स्ट्रिंग "1" भेज रहे हैं, यह वास्तविक मूल्य के लिए deserialize नहीं होगा जैसा कि आप उम्मीद कर सकते हैं। या तो सही/गलत भेजें ("सत्य"/"झूठा" नहीं) या प्रकार के प्रकार को स्ट्रिंग में बदलें।

  5. उस निजी आइटम फ़ील्ड से छुटकारा पाएं, जिसकी आपको आवश्यकता नहीं है:

    निजी नोट आइटम;

  6. उन कंस्ट्रक्टर्स से छुटकारा पाएं जो आपके पास हैं

    सार्वजनिक नोट(स्ट्रिंग जोंस)

    सार्वजनिक नोट (नोट आइटम)

    इतना ही नहीं कि उनका कोई मतलब नहीं है और वे काम नहीं करेंगे, आपको उनकी आवश्यकता नहीं है क्योंकि JSON deserializer आपके लिए फ़ील्ड भर देगा।

संपादित करें: उदाहरण के लिए, आप कहते हैं कि यह निर्माण नहीं करता है क्योंकि एक पैरामीटर वाला कोई और निर्माता नहीं है। बेशक यह निर्माण नहीं करता है, यह रेखा है

Note notesdata = new 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 विधि डीबी में जोड़ी जा रही वस्तु को वापस कर दे। तो बेझिझक इसे बदलें

   public Note Add(Note item)

इसके लिए

   public void Add(Note item)

और कुछ भी वापस न करें, आपको इसकी आवश्यकता नहीं है।

मैं SqlConnection और इसके आसपास की चीजों का कोई विशेषज्ञ नहीं हूं, इसलिए मैं उस हिस्से पर टिप्पणी नहीं करता। मैं डीबी के साथ काम करने के लिए अपनी परियोजनाओं में ईएफ का उपयोग करता हूं। तो उस हिस्से में कुछ समस्याएं हो सकती हैं, लेकिन मैं उस पर टिप्पणी नहीं कर सकता।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. स्तंभ अनपिवट सूची में अन्य स्तंभों के प्रकार के साथ विरोध करता है

  2. मैं DELETE कथन में उपनाम का उपयोग क्यों नहीं कर सकता?

  3. ddmmyyyy एसक्यूएल में एसक्यूएल डेटाटाइम करने के लिए

  4. SQL सर्वर, भ्रामक XLOCK और अनुकूलन

  5. SQL के साथ सभी ग्राहकों के लिए रनिंग काउंट और रनिंग टोटल की गणना करना