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

Npgsql 4.0 पैरामीटर और शून्य मान

नए जेनेरिक पैरामीटर एपीआई में वास्तव में एक समस्या है - इसे नियमित रूप से स्वीकार करना चाहिए .NET null (और नहीं DBNull.Value ), मैंने यह समस्या खोली है इसे ट्रैक करने के लिए, इसे 4.0.3 में ठीक कर दिया जाएगा।

ध्यान दें कि दस्तावेज़ीकरण नोट के रूप में कहते हैं, जेनेरिक एपीआई का पूरा बिंदु Value . का उपयोग करने से बचना है संपत्ति, जो प्रकार की है object . यदि आप सामान्य NpgsqlParameter<int> . का उपयोग करते हैं लेकिन असाइन करें Value , एपीआई के उद्देश्य को हराकर, आपका इंट बॉक्सिंग हो जाएगा। आपको TypedValue . को असाइन करना चाहिए , जो कि int . प्रकार का है और बॉक्स नहीं होगा। यही कारण है कि आप DBNull.Value असाइन नहीं कर सकते हैं एक शून्य मान इंगित करने के लिए (यह एक अलग .NET प्रकार है)।

इस नए जेनेरिक एपीआई का उपयोग किया जाना चाहिए या नहीं, इस पर कुछ नोट्स:

  • यदि आप बहुत से मान प्रकार लिख रहे हैं (उदा. int , DateTime ...) यह सभी बॉक्सिंग आवंटन को हटा देगा। क्या यह महत्वपूर्ण होने जा रहा है यह आपके आवेदन पर निर्भर करता है - प्रोफ़ाइल ध्यान से।
  • सामान्य रूप से जेनेरिक एपीआई को हमेशा गैर-जेनेरिक वाले के लिए प्राथमिकता दी जानी चाहिए जब प्रकार को संकलन-समय पर जाना जाता है। यह कंपाइलर को टाइप की शुद्धता की जल्दी जांच करने की अनुमति देता है और आपके कोड को स्पष्ट करता है - हम List<string> का उपयोग करते हैं के बजाय ArrayList अच्छी कोडिंग के मामले में तब भी जब प्रदर्शन कोई समस्या न हो
  • जेनेरिक API का मुख्य (केवल?) दोष यह है कि यह Npgsql-विशिष्ट है, जो आपके कोड को अन्य डेटाबेस ड्राइवरों के लिए गैर-पोर्टेबल बनाता है (हालाँकि एक समस्या मौजूद है इसे (या ऐसा ही कुछ) ADO.NET का हिस्सा बनाने के लिए)।


  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. सक्रिय रिकॉर्ड, रेल और पोस्टग्रेज के साथ कई डुप्लिकेट फ़ील्ड वाली पंक्तियाँ खोजें

  3. PostgreSQL विदेशी कुंजी मौजूद नहीं है, विरासत का मुद्दा?

  4. क्या PostgreSQL कनेक्शन को Python वेब ऐप में पूल किया जाना चाहिए, या प्रति अनुरोध एक नया कनेक्शन बनाना चाहिए?

  5. PostgreSQL अनुक्रम से एकाधिक आईडी चुनें