2008-10-16 16 views
19

अब तक मैं अपने सभी सी # डेटाबेस संचालित अनुप्रयोगों में सक्रिय रिकॉर्ड का उपयोग कर रहा हूं। लेकिन अब मेरे आवेदन के लिए मेरे व्यापार वस्तुओं से अलग होने के लिए मेरे दृढ़ता कोड की आवश्यकता है। मैंने मार्टिन फाउलर के डेटा मैपिंग पैटर्न के बारे में बहुत सी पोस्ट पढ़ी हैं, लेकिन इस पैटर्न का मेरा ज्ञान अभी भी बहुत सीमित है। ग्राहक और CustomerParameters - मैं 2 टेबल है, तोडेटा मैपर पैटर्न

:

के निम्न उदाहरण का उपयोग करते हैं। ग्राहक पैरामीटर तालिका में एक नया ग्राहक बनाने के लिए डिफ़ॉल्ट ग्राहक मान होते हैं।

मुझे सभी ग्राहक दृढ़ता को संभालने के लिए ग्राहकमैपर वर्ग बनाना होगा। ग्राहक डेटा को बनाए रखने के लिए मेरे ग्राहक और ग्राहक सूची वर्ग फिर इस मैपर वर्ग के साथ सहयोग करेंगे।

मैं निम्नलिखित प्रश्न:

  1. मैं कैसे कच्चे डेटा & करने के लिए अपने ग्राहक वर्ग से नक्शाकार करने के लिए कुछ व्यापार के नियम को तोड़ने के बिना हस्तांतरण होगा? डीटीओ के?

  2. क्या यह मेरे मैपर वर्ग में कई ग्राहकों के डेटा को अपडेट और लोड करने के लिए एक SaveAll और LoadAll विधि स्वीकार्य है? यदि हां, तो SaveAll के मामले में, मैपर को डेटा अपडेट या डालने के बारे में कब पता चलेगा?

  3. क्या ग्राहक मैपर वर्ग ग्राहक पैरामीटर तालिका से डिफ़ॉल्ट मानों को पुनर्प्राप्त करने के लिए जिम्मेदार होगा, या क्या ग्राहक पैरामीटर मैपर बनाने के लिए बेहतर होगा?

ए ओ/आर मैपर टूल वास्तव में यहां नहीं है। मैं जिस डेटाबेस का उपयोग कर रहा हूं वह ट्रांजेक्शनल है और इसके लिए आवश्यक है कि मैं अपना खुद का मैपर पैटर्न लिखूं।

किसी भी विचार और टिप्पणियों की बहुत सराहना की जाएगी।

+2

आप "लेन-देन संबंधी" के अपने अर्थ पर विस्तार किया जा सका, विशेष रूप से MS-एसक्यूएल या MySQL की तरह पारंपरिक रूप से लेन-देन संबंधी आरडीबीएमएस को यह विषम? अन्यथा मैं पेटटर के जवाब को काफी स्पष्ट रूप से समर्थन दूंगा। –

+1

मैं Btrieve का उपयोग कर रहा हूं (इंडेक्टेड अनुक्रमिक एक्सेस विधि (आईएसएएम) के आधार पर) जो SQL आधारित नहीं है। सभी ओ/आर मानचित्रण उपकरण जिन्हें मैं परिचित हूं, Btrieve का समर्थन नहीं करते हैं। – MegaByte

उत्तर

0

मैं सुझाव दूंगा कि आप डेटा मैपर पैटर्न को स्वयं लागू करने का प्रयास करने से पहले ओ/आर-मैपर टूल पर नज़र डालें। यह आपको बहुत समय बचाएगा। ओ/आर-मैपर का एक लोकप्रिय विकल्प NHibernate है।

विज्ञापन 1) मैपर ग्राहक वस्तु बनाने के लिए जिम्मेदार है:

+0

ए ओ/आर मैपर टूल वास्तव में मेरे लिए एक विकल्प नहीं है। डेटाबेस का उपयोग कर लेनदेन है और यह आवश्यक है कि मैं अपना खुद का मैपर पैटर्न लिखूं। – MegaByte

11

शॉन मैं आपके सवालों का इस तरह का जवाब होगा। आपके मैपर ऑब्जेक्ट में कुछ पुनर्प्राप्ति ById विधि (उदाहरण के लिए) होगी। यह वैध आईडी ऑब्जेक्ट का निर्माण करने के लिए एक आईडी और किसी भी तरह (वह मैपर ऑब्जेक्ट की ज़िम्मेदारी नहीं) स्वीकार करेगा। वही दूसरा तरीका सच है। जब आप एक वैध ग्राहक ऑब्जेक्ट के साथ Mapper.Update विधि को कॉल करते हैं, तो मैपर ऑब्जेक्ट यह सुनिश्चित करने के लिए ज़िम्मेदार है कि सभी प्रासंगिक डेटा बने रहें (जहां भी उचित - डीबी, मेमोरी, फ़ाइल इत्यादि)

विज्ञापन 2) जैसा कि मैं मैपर ऑब्जेक्ट पर विधियों को पुनर्प्राप्त/जारी रखने के ऊपर नोट किया गया है। ऐसी कार्यक्षमता प्रदान करना इसकी ज़िम्मेदारी है। इसलिए LoadAll, SaveAll (शायद मूल्य ऑब्जेक्ट्स की सरणी पास कर रहा है) वैध मैपर विधियां हैं।

विज्ञापन 3) मैं हाँ कहूंगा। लेकिन आप अलग-अलग वर्गों (यदि आप चाहते हैं/चाहते हैं) में मैपर ऑब्जेक्ट्स के विभिन्न पहलुओं को अलग कर सकते हैं: डिफ़ॉल्ट मान, नियम सत्यापन, आदि

मुझे आशा है कि इससे मदद मिलती है। मैं वास्तव में मार्टिन फाउलर की पुस्तक Patterns of Enterprise Application Architecture पढ़ने के लिए आपको सलाह देता/सुझाव देता हूं।

0

आप आईबीएटीआईएस देख सकते हैं।NHBernate के विकल्प के रूप में नेट। यह एक ओ/आर उपकरण भी है, लेकिन मुझे यह पाया गया है कि यह NHibernate की तुलना में उपयोग करना थोड़ा आसान हो गया है।

http://ibatis.apache.org/

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