मेरी स्थिति यह है कि मैं अनिवार्य रूप से खराब हो गया। मैंने लगभग 1.5 साल पहले अपना कोड बेस विरासत में लिया था जब मैंने इस स्थिति को लिया और पहिया को फिर से शुरू करने के बजाए, भले ही मुझे पता है कि मेरे पास होना चाहिए, मैंने पिछले डेवलपर के रूप में डीएएल को काफी समान संरचना में रखा था।आप किस डीएएल रणनीति का उपयोग करते हैं या सुझाव देते हैं?
अनिवार्य रूप से एक फ़ाइल (अब कोड की 15k लाइनों पर) है जो डेटा को पुनर्प्राप्त करने के लिए डेटासेट्स और टेबल एडाप्टर का उपयोग करने वाले डीएओ के समूह के बीच जाने के रूप में कार्य करती है। मेरी एक्सएसडी फाइलें इस तरह के आकार में उभरी हैं कि वे आर # को दृश्य स्टूडियो को हर बार खुलने के कारण क्रैश करते हैं और इंटरमीडिएरी क्लास जो अब 15k लाइनों का विश्लेषण करने के लिए आर # के लिए हमेशा के लिए लेती है। उल्लेख नहीं है कि यह बदसूरत है, यह काम करता है लेकिन अच्छी तरह से नहीं, और डीबग करने के लिए एक पूर्ण दुःस्वप्न है।
मैंने अब तक जो प्रयास किया है वह एनएचबेर्नेट पर स्विच कर रहा है। एनएचबेर्नेट एक महान पुस्तकालय है, लेकिन दुर्भाग्य से यह मेरे आवेदन के साथ काम करने के लिए पर्याप्त अनुकूल नहीं था, लीड डेवलपर कहता है (फैबियो मौलो) यह मेरी आवेदन आवश्यकताओं का एक संयोजन है और डेटाबेस के रूप में पहचान का उपयोग करते समय NHibernate पर प्रतिबंध है पीके रणनीति।
तो अब मैं अनिवार्य रूप से अपने स्वयं के डीएएल को डिजाइन करने के लिए वापस आ गया हूं। मैं इसके लिए कुछ अलग पैटर्न देख रहा हूं, लेकिन आपकी डीएएल डिजाइन रणनीतियों को प्राप्त करना चाहता हूं। किसी विशेष तरीके से डीएएल को लागू करने के कई तरीके और कारण हैं, इसलिए यदि आप अपनी रणनीति की व्याख्या कर सकते हैं और यह आपके लिए सबसे अच्छा क्यों था, तो मैं इसकी सराहना करता हूं।
अग्रिम धन्यवाद!
संपादित करें: मुझे बताएं कि NHHernate क्यों काम नहीं करता है क्योंकि यह तत्काल प्रतिक्रिया प्रतीत होता है। मेरे उपयोगकर्ता एक "नौकरी" बनाते हैं जो वास्तव में मेरी नौकरी कक्षा का एक क्षणिक प्रतिनिधित्व है। इस नौकरी के भीतर वे इसे एक या वजन घटाने वाले कारकों की सूची देंगे जो सृजन के समय भी क्षणिक होते हैं। अंत में वे नौकरी के विवरणों की एक सूची प्रदान करते हैं जिनके पास उनके साथ एक विशेष वजन कारक होता है। चूंकि, डीबी में, जब मैं नौकरी को जारी रखने के लिए जाता हूं तो वज़न कारक अद्वितीय होते हैं और यह वजन घटाने के लिए नीचे गिर जाता है जब इसे डुप्लिकेट वज़न कारक मिलता है। मैंने वज़न कारक को विस्तार से पहले चेक करने की कोशिश की (जो मैं नहीं करना चाहता था क्योंकि मैं डीबी को अतिरिक्त कॉल नहीं चाहता) लेकिन एनएच में CreateCriteria को कॉल करने से सत्र में फ्लश होता है फैबियो, जो मेरे कैश को नष्ट कर देता है और इस तरह नौकरी के स्मृति प्रतिनिधित्व में पूरी तरह से मारता है। एनएच मेलिंग सूची में लोगों ने कहा कि मुझे GUID पर स्विच करना चाहिए, लेकिन यह एक व्यवहार्य विकल्प नहीं है क्योंकि रूपांतरण प्रक्रिया एक दुःस्वप्न होगी।
NHibernate के साथ आपके पास क्या समस्याएं हैं? मैं बिना किसी मुद्दे के पहचान पीके के साथ इसका इस्तेमाल करता हूं। –
हम्म, शायद वह लंबे समय तक चलने वाले सत्र (सत्र प्रति व्यापार लेनदेन मॉडल) का उपयोग करता है, और इस तरह के दृष्टिकोण में, पहचान का उपयोग करके निराश हो जाता है, क्योंकि यह आपके यूनिटफवर्क को तोड़ देता है (इसे एक नई इकाई डालने के बाद सीधे फ्लश करने की आवश्यकता होती है)। पहचान को छोड़ने के लिए एक समाधान हो सकता है, और HiLo पहचान जेनरेटर का उपयोग करें। –
आह हाँ, यह एक संभावना है (और आपका समाधान)। –