2010-04-13 6 views
5

मैंने अभी एक महीने पहले .NET प्रोग्रामर की एक छोटी सी टीम पर काम करना शुरू कर दिया था और हाल ही में हमारे टीम लीड के साथ एक चर्चा में आया है कि हम अपने कोड में डाटाबेसिंग का उपयोग क्यों नहीं करते हैं। हर बार जब हम डेटा ग्रिड के साथ काम करते हैं, तो हम डेटा टेबल के माध्यम से पुनरावृत्ति करते हैं और ग्रिड पंक्ति को पंक्ति से पॉप्युलेट करते हैं; कोड आम तौर पर इस तरह दिखता है:मुझे .NET में डेटा बाध्यकारी का उपयोग करके सावधान रहना चाहिए?

Dim dt as DataTable = FuncLib.GetData("spGetTheData ...") 
Dim i As Integer 

For i = 0 To dt.Rows.Length - 1 '(not sure why we do not use a for each here)' 
    gridRow = grid.Rows.Add() 
    gridRow(constantProductID).Value = dt("ProductID").Value 
    gridRow(constantProductDesc).Value = dt("ProductDescription").Value 
Next 

'(I am probably missing something in the code, but that is basically it)' 

हमारी टीम का नेतृत्व करते हुए कहा था कि वह बाध्यकारी जब शेरिडन ग्रिड नियंत्रण, VB6 के साथ काम कर रहे डेटा का उपयोग कर जला दिया गया, और ADO नब्बे के दशक में वापस recordsets। उसे यकीन नहीं है कि सही समस्या क्या थी, लेकिन उसे याद है कि बाध्यकारी अपेक्षा के अनुसार काम नहीं करता था और उसे कुछ बड़ी समस्याएं हुईं। तब से, उन्होंने डेटा बाध्यकारी पर भरोसा नहीं किया है और डेटा को उनके सभी नियंत्रणों के लिए हाथ से लोड किया है।

वार्तालाप का कारण भी आया क्योंकि मुझे डेटा बहुत ही सरल होने के लिए बाध्यकारी पाया गया था और वास्तव में डेटा प्रस्तुति (इस मामले में, डेटा ग्रिड) को इन-मेमोरी डेटा स्रोत से अलग करना पसंद था (इस मामले में, विवरण सारणी)। ग्रिड में पंक्ति द्वारा डेटा पंक्ति "लोड हो रहा है" इस भेद को तोड़ने लग रहा था। मैंने यह भी देखा कि डब्ल्यूपीएफ और सिल्वरलाइट में एक्सएएमएल के आगमन के साथ, डेटा-बाइंडिंग आपके डेटा के साथ एक डिजाइनर के एक्सएएमएल कोड को साफ करने में सक्षम होने के लिए एक जरूरी है।

मुझे .NET में डेटा-बाइंडिंग का उपयोग करने के बारे में सावधान रहना चाहिए?

+1

नेट में डाटाबेसिंग vcom6 में डेटाबेस से _completely_ अलग है। – SLaks

+0

@Slaks मुझे कल्पना है। क्या आप किसी भी अच्छे संदर्भ के बारे में जानते हैं जिसे मैं पढ़ सकता हूं जो उस मामले को स्पष्ट रूप से बनाता है? –

+3

कोड का यह टुकड़ा कम से कम 10 वर्षों के लिए पुराना दिखता है। – Andrey

उत्तर

3

यदि आप जो भी कर रहे हैं, वह डेटा प्रदर्शित कर रहा है, मेरी राय में, डाटाबेसिंग का उपयोग न करने का कोई कारण नहीं है।

मैं भी वीबी 6 दुनिया से आया हूं, जहां डाटाबेसिंग हमें बार-बार बिताती है, इसलिए इसका उपयोग न करने के लिए हमारे पास मानकों और कामकाज होते थे।

.NET दर्ज करें, जहां डाटाबेसिंग उतनी लचीली है जितनी आपको इसकी आवश्यकता है। मैं वास्तव में उस शक्ति की सराहना करता हूं जो बाध्यकारी है।

आप अंतर्निहित क्षमताओं को अस्वीकार कर बहुत अनावश्यक कोड लिख रहे हैं।

आप कक्षाओं में गुणों के लिए टेक्स्टबॉक्स जैसे ऑन-स्क्रीन ऑब्जेक्ट्स को भी बाध्य कर सकते हैं। Winforms डेटाबेसिंग के अवलोकन के लिए इस लिंक को देखें। http://msdn.microsoft.com/en-us/library/ef2xyb33(v=VS.100).aspx

+0

@ जेरेमी आपके इनपुट के लिए धन्यवाद और एमएसडीएन से जुड़ने के लिए धन्यवाद। मुझे लगता है कि यह स्पष्ट रूप से जाना चाहिए था, लेकिन मैंने इसके बारे में भी सोचा नहीं था। यह पता चला है कि वहाँ जानकारी की एक संपत्ति है! –

7

का उपयोग करते समय आपको सावधान रहना चाहिए आप पूरी तरह से समझ में नहीं आते हैं।

मैं डेटा-बाइंडिंग को बहुत अच्छी तरह से समझने के लिए कबूल करूंगा, लेकिन मुझे अभी भी लगता है कि आपकी टीम लीड की स्थिति थोड़ा चरम और प्रतिक्रियात्मक है।

अंगूठे का मेरा नियम होगा; जब तक आप इसे समझ नहीं लेते तब तक कुछ भरोसा न करें। एक बार जब आप इसे समझ लेंगे, तो आपको अंगूठे के नियमों (या किसी भी व्यक्ति) नियमों की आवश्यकता नहीं है।

:)

कुछ का उपयोग कर चेतावनियां से संबंधित लिंक डेटा-बाइंडिंग:

http://travisgosselin.com/blog/?p=46

Databinding in C# and .NET

+0

महान सलाह :-) –

+0

मैं पूरी तरह से सहमत हूं। यही कारण है कि मैं डेटा-बाध्यकारी के साथ क्या हो रहा है बेहतर समझना चाहता हूं। मेरे लिए, मैं .NET और * में डाटाबेसिंग को पूरी तरह से समझूंगा * फिर * इसे पूरी तरह से टालने के बजाय इसका उपयोग न करें। –

+0

मुझे नहीं पता कि आपको इसका उपयोग करने से पहले निर्माण को पूरी तरह से समझने की आवश्यकता है (यहां कार/इंजन समानता डालें)। लेकिन आपको समझना चाहिए कि इसका कब और कब उपयोग नहीं करना चाहिए। – BenV

1

सब कुछ के रूप में, आप इसे ठीक से, या अनुचित तरीके से उपयोग कर सकते हैं। डेटा बाइंडिंग कई बार बहुत शक्तिशाली हो सकती है, लेकिन जैसा कि पहले उल्लेख किया गया है, आपको पता होना चाहिए कि इसका सही तरीके से उपयोग कैसे किया जाए।

आम तौर पर, .NET (और इसके टूल्स) में दो प्रकार के बाध्यकारी होते हैं: स्वचालित और मैन्युअल। स्वत: बाध्यकारी तब होता है जब वीएस आपके लिए सब कुछ बनाता है, और आप खींचें और छोड़ें। ऐसा मत करो। कभी। वीएस -2010 में सिल्वरलाइट 4 के लिए इन नए अपवादों के लिए केवल अपवाद ही होगा। यह एकमात्र स्वचालित बाध्यकारी ठीक से किया जाता है।

दूसरी तरफ, डेटासेट्स का उपयोग यूनिट ऑफ वर्क्स, मुद्रा प्रबंधक और अन्य सामान के रूप में मैन्युअल डाटाबेसिंग, बेहद उपयोगी हो सकता है (यहां .NET 2.0 WinForms के बारे में बात कर रहा है, है ना?)।

+0

हाँ, हम .NET 2.0 WinForms का उपयोग कर रहे हैं। मैं सोच रहा हूं कि क्या आप "मैन्युअल डाटाबेसिंग ... और अन्य सामान" के अर्थ का विस्तार कर सकते हैं, यह बेहद उपयोगी हो सकता है। क्या आप एक उदाहरण दे सकते हैं? यह वास्तव में सहायक होगा। –

+0

ठीक है, मैन्युअल डाटाबेसिंग से मेरा मतलब डेटासोर्स और अन्य गुणों का उपयोग करके सीधे कोड में नियंत्रण के लिए बाध्यकारी है। इसे देखें: http://www.akadia.com/services/dotnet_databinding.html –

+0

बस जोड़ने के लिए, इससे कोई फर्क नहीं पड़ता कि आप डेटाटेबल्स या कस्टम पॉको ऑब्जेक्ट्स से जुड़ते हैं, अगर आप उन्हें पसंद करते हैं। बाध्यकारी किसी भी तरह से काम करता है। मैंने इसे बहुत अच्छे डेटा-मैनिपुलेशन फॉर्म बनाने के लिए कई बार इस्तेमाल किया। –

2

http://www.knowdotnet.com/articles/differences.html

बातों में बेहतर करने के लिए नाटकीय रूप से बदल दिया है।नेट

Data Binding vs Manual Population

VB6 प्रोग्रामर ADO डेटा नियंत्रण और क्योंकि कुछ प्रदर्शन के कारणों के लिए बाध्य नियंत्रण से दूर रहने लगा है। मैं वीबी.नेट की ओर बढ़ रहा हूं और यह महसूस कर रहा हूं कि बाध्य नियंत्रण सभी के बाद इतनी बुरा नहीं है।

संबंधित मुद्दे

 संबंधित मुद्दे