के साथ नाम से बाध्यकारी क्वेरी पैरामीटर मैं वर्तमान में ओरेकल (System.Data.OracleClient
) के लिए Microsoft ADO.NET प्रदाता का उपयोग कर रहा हूं। मुझे पता है कि यह निश्चित रूप से सबसे अच्छा ओरेकल प्रदाता उपलब्ध नहीं है और यह will soon be deprecated है, मुझे इसके बजाय ओरेकल के ओडीपी.NET का उपयोग करना चाहिए। कारण मैं अभी भी एमएस प्रदाता का उपयोग करता हूं क्योंकि ओडीपी.नेट द्वारा पैरामीटर को बाध्य करता है, नाम से नहीं। जब आप किसी क्वेरी में कई पैरामीटर का उपयोग करते हैं तो यह वास्तव में एक पिटा हो सकता है, क्योंकि आपको उन्हें सही क्रम में जोड़ने के लिए सावधान रहना होगा, जो आसानी से बग का कारण बन सकता है। यह भी कष्टप्रद है जब आप एक ही क्वेरी में एक ही पैरामीटर कई बार उपयोग करते हैं, उदाहरण के लिए:ODP.NET
SELECT A,B,C FROM FOO WHERE X = :PARAM_X OR :PARAM_X = 0
ODP.NET के साथ
, मैं OracleCommand
है, जो मुझे लगता है कि बेवकूफ है करने के लिए दो पैरामीटर जोड़ने के लिए है ...
ओडीपी.नेट की OracleCommand
में उस डिफ़ॉल्ट व्यवहार को बदलने की संपत्ति है: BindByName
। जब सत्य पर सेट किया जाता है, पैरामीटर नाम से बंधे होते हैं, जो मैं चाहता हूं। दुर्भाग्य से यह वास्तव में, मेरी मदद नहीं करता है:
- यह डिफ़ॉल्ट
- मैं लगभग स्पष्ट रूप से ठोस ADO.NET कक्षाओं का उपयोग कभी नहीं से गलत पर सेट है, मैं ADO.NET 2.0 अमूर्त परत का उपयोग करना पसंद (
DbProviderFactory
,DbConnection
,DbCommand
...) किसी विशिष्ट आरडीबीएमएस को युग्मन को कम करने के लिए। तो मेरे पासBindByName
संपत्ति तक पहुंच नहीं है, जब तक कि मैं स्पष्ट रूप सेOracleCommand
पर सभी लाभ या अमूर्तता को खो देता हूं। - एएसपी.NET SqlDataSource का उपयोग करते समय, मैं खुद को डीबी कॉमांड नहीं बनाता, इसलिए मुझे
BindByName
को सत्य पर सेट करने का मौका नहीं मिलता है (मैं इसे चुनने की घटना में कर सकता हूं, लेकिन यह वास्तव में दर्द है प्रत्येक SqlDataSource के लिए यह करें ...)
मुझे इस मुद्दे को कैसे संभालना है? क्या BindByNameByDefault
कहीं और सेटिंग है? (मुझे ऐसा कुछ नहीं मिला, लेकिन मैंने इसे याद किया होगा ...)
मैंने इस "फीचर" के कारण 3 घंटे बर्बाद कर दिया! – Grzenio