2010-02-23 11 views
29

मैं एएसपी.नेट 3.5 का उपयोग कर एक वेब एप्लिकेशन पर काम कर रहा हूं। आवेदन में सैकड़ों टेबल हैं। मुझे एक संगोष्ठी में बताया गया था कि मुझे एकाधिक डीबीएमएल फाइलों का उपयोग करने के बजाय पूरे आवेदन के लिए एक डीबीएमएल फ़ाइल का उपयोग करना चाहिए (स्टैक ओवरफ्लो में एक पोस्ट भी था जो एक ही बात कहता था)। यह देखते हुए कि मेरे पास इतनी सारी टेबल हैं जो एक का उपयोग कर रही हैं। डीबीएमएल फ़ाइल समझ में आती है या क्या मैं कई डीबीएमएल फाइलों को बनाने से बेहतर हूं जो तार्किक रूप से समूहबद्ध हैं?एक लिंक से एसक्यूएल - एकाधिक डीबीएमएल फाइलें या एक डीबीएमएल फ़ाइल

उदाहरण के लिए, मैं निम्नलिखित .dbml फ़ाइलों के निर्माण के बारे में सोच रहा था:

  • ग्राहक
  • विक्रेता
  • कर्मचारी
  • बिक्री आदेश

चिंताओं में से एक है कि मैं कई डीबीएमएल फाइलों का उपयोग करने के बारे में है। मैं डीबीएमएल फाइलों में अपडेट कैसे संभालता हूं। उदाहरण के लिए, यदि मुझे एक नया बिक्री आदेश दर्ज किया गया था तो मुझे ग्राहक तालिका पर एक फ़ील्ड अपडेट करना पड़ा। मैं इसे कैसे संभालेगा? मैं निश्चित रूप से ग्राहक और बिक्री आदेश दोनों में ग्राहक तालिका शामिल नहीं करना चाहता हूं। डीबीएमएल फाइलें। क्या मैं ऑपरेशन को ट्रांज़ेक्शनस्कोप में लपेट सकता हूं?

मुझे नहीं पता कि निम्नलिखित पर उत्तर पर कोई प्रभाव पड़ता है, लेकिन मेरी योजना रिपोजिटरी पैटर्न और पीओसीओ कक्षाओं का उपयोग करना है ताकि डीबीएमएल फ़ाइल में तालिका परिभाषाओं के संदर्भ मेरे डेटा एक्सेस के लिए स्थानीय हों परत।

धन्यवाद

+0

+1 महान प्रश्न .. – jinsungy

+0

+1। मैं सहमत हूं .... – Steven

उत्तर

11

मैं होता आप अपने सभी तालिकाओं के लिए उपयोग करने के लिए एक dbml फ़ाइल सलाह देने के लिए।

यदि आप join two tables from different data contexts पर प्रयास कर रहे हैं, तो यह आपके कोड को और अधिक मजबूत बनाता है। यह simulating cross context joins द्वारा किया जा सकता है, लेकिन खुद को उस स्थिति में क्यों डालें। मूर्ख इसे सहज ही रखो।

इसके अलावा, यदि आप 2 या अधिक डीबीएमएल फ़ाइलों के साथ जाने का निर्णय लेते हैं और आप गलती से एक ही तालिका को एकाधिक डेटा संदर्भों में जोड़ते हैं, तो आपको "This member is defined more than once” error मिल जाएगा।

+0

मैं डीबीएमएल फाइलों में शामिल होने की समस्या पर विचार करना भूल गया। मुझे उम्मीद है कि डीबीएमएल फाइल में इतनी सारी टेबलें होने से मुझे कोई अप्रत्याशित दुःख नहीं मिलेगा। धन्यवाद – mikener

6

मैंने एक परियोजना पर काम किया है टीम ने चार अलग-अलग डीबीएमएल फाइलों में डोमेन को अलग करने का फैसला किया था। इस थूक-अप के मुख्य कारण को LINQ से SQL डिजाइनर के साथ करना था। डिजाइनर का निर्माण बड़े डोमेन के साथ नहीं किया गया था।

इस परियोजना में इन चार 'उप डोमेन' काफी अलग थे, लेकिन कुछ ओवरलैप था और यह हमें हर समय थोड़ा सा था। इस अनुभव के साथ मैं आपको प्रति डोमेन एक एकल डीबीएमएल फ़ाइल का उपयोग करने की सलाह दूंगा। आमतौर पर आपके पास प्रति डोमेन एक डोमेन होगा, इसलिए इसका मतलब प्रति डेटाबेस एक डीबीएमएल फ़ाइल है।

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

using (var con = new SqlConnection("constr")) 
{ 
    con.Open(); 
    using (var tran = con.BeginTransaction()) 
    { 
     using (var context = new CustomerDataContext(con)) 
     { 
      // do some work with it 
      context.SubmitChanges(); 
     } 

     using (var context = new VendorDataContext(con)) 
     { 
      // do some work with it 
      context.SubmitChanges(); 
     } 
    } 
} 

यह मॉडल है मैं एक ही डेटाकॉन्टेक्स्ट के साथ भी कई बार उपयोग करता हूं। हालांकि, कनेक्शन और लेनदेन का निर्माण दूर किया गया है, इसलिए लेनदेन किए जाने वाले कोड में केवल एक ही स्थान है।

2

मेरे पास 200 टेबल या उससे अधिक के साथ काफी बड़ी परियोजना है और यह एक डेटा संदर्भ में ठीक काम करता है; चूंकि सभी डेटा सुंदर इंटरकनेक्टेड (2 और 3 सामान्य रूप के बीच डिज़ाइन किया गया है), यह एकाधिक डेटा संदर्भों का उपयोग करने में दर्द होगा।

कई संदर्भ मुद्दों उन क्षेत्रों में मजेदार नहीं होंगे जहां ऐप को विभाजित टेबल के खिलाफ एक क्वेरी करने की आवश्यकता है; LINQ काम करता है और ड्रिल-डाउन पदानुक्रम के तरीके के कारण, आपको यह सुनिश्चित करना होगा कि कुछ टेबल अलग-अलग डेटा संदर्भों में हों। कम से कम एक सुविधा दृष्टिकोण से, यह नहीं कि यह नहीं किया जा सका।

एचटीएच।

0

मैं प्रति संदर्भ एक डीबीएमएल फ़ाइल का उपयोग करूंगा। संदर्भ के अनुसार, मेरा मतलब है कि ऑपरेशन आपके उपयोगकर्ता द्वारा किया जाना चाहिए क्योंकि वह आपके आवेदन की एक विशेष विंडो में है। उदाहरण के लिए:

  1. आप एक जीयूआई आप अपने ग्राहकों की वस्तुओं का प्रबंधन करने की इजाजत दी है, मैं फिर एक ग्राहक प्रबंधन डैटाकॉन्टेक्स्ट रखने पर विचार करता हूं जिसके भीतर मैं ग्राहक प्रबंधन कार्यों से संबंधित तालिकाओं को जोड़ता हूं, और सभी निर्भरताओं।

इस तरह, यदि आप देखते हैं कि मेरा क्या मतलब है, तो आपके पास प्रति विंडो एक संदर्भ हो सकता है। लेकिन यह सब आपके रिलेशनल मॉडल पर निर्भर करता है, यह आपके डीबीएमएल फ़ाइल में सभी तालिकाओं को शामिल करना आसान हो सकता है, लेकिन फिर, यह एक संदर्भ को थोड़ा और जटिल बनाता है, और आपके ग्राहक प्रबंधन से संबंधित तालिकाओं को इंगित नहीं करता है या अन्यथा, आपके द्वारा बनाए गए संदर्भ के आधार पर।

वास्तव में, उपयोग की आसानी के लिए, यह केवल एक का उपयोग करने में बुरा नहीं है, लेकिन यदि कोई इसका उल्लेख हो तो यह कोई अच्छा अभ्यास नहीं है।

+0

संदर्भ में # 1 क्या है? क्या आपके पास एक लिंक है? – Justin

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