2010-09-15 15 views
8

के साथ इकाई फ्रेमवर्क मान लें कि मेरे डेटाबेस में एकाधिक डीबी स्कीमा है उदाहरण के लिए: मानव संसाधन और सूची।एकाधिक edmx

इनमें से प्रत्येक स्कीमा में कई तालिकाओं हैं। क्या आप आमतौर पर अपने डीबी को कई एडीएमएक्स में विभाजित करते हैं या आमतौर पर बस एक ही एडीएमएक्स में सबकुछ डालते हैं?

मैं प्रत्येक स्कीमा के लिए एडीएमएक्स बनाने के बारे में सोच रहा था, लेकिन सोच रहा था कि यह एक यूनिटवर्क पैटर्न को कैसे प्रभावित करेगा। कुछ लेखों के माध्यम से पढ़ना, ऑब्जेक्ट कॉन्टेक्स्ट यूनिटवर्कवर्क होगा। 2 एडीएमएक्स को परिभाषित करके, मैं 2 ऑब्जेक्ट कॉन्टेक्स्ट के साथ समाप्त हो जाऊंगा: ह्यूमन रिसोर्सकॉन्टेक्स्ट और इन्वेंटरी कॉन्टेक्स्ट, जिसका अर्थ है कि प्रत्येक एक इकाई कार्य करेगा। क्या होगा यदि मैं मानव संसाधन में एक इकाई में किए गए सभी संशोधन और inventorycontext में एक इकाई एटीओएमआईसी होना चाहता हूं, तो क्या यह इकाई कार्य पैटर्न के साथ प्राप्त किया जा सकता है?

using(TransactionScope trans = new TransactionScope()) 
{ 
    using(HumanResources hr = new HumanResources()) 
    { 
     //... 

     hr.SaveChanges(); 
    } 

    using(Inventory inv = new Inventory()) 
    { 
     //... 

     inv.SaveChanges(); 
    } 

    trans.Complete(); 
} 

जाहिर है आप अपने संदर्भ वस्तुओं जैसे आप चाहें पुनर्व्यवस्थित कर सकते हैं (:

+0

भी [इकाई की रूपरेखा में एकाधिक स्कीमा] मेरी अंतिम प्रश्न देखना [1] [1]: http://stackoverflow.com/questions/12052136/how-to-entity-framework-and - बहु-स्कीमा – MorbidCamel

उत्तर

7

हालांकि यह विभाजित edmx के में स्कीमा द्वारा डेटाबेस का समर्थन नहीं है, तो आप एक TransactionScope का उपयोग करके अपडेट परमाणु बना सकते हैं यदि आपको एक ही समय में दोनों का उपयोग करने की आवश्यकता है, उदाहरण के लिए) और आप जो भी उचित हो, लेनदेन अलगाव स्तर को बदल सकते हैं, लेकिन यह आपको डेटाबेस को परमाणु परिवर्तन करने के लिए आपको जो कुछ जानने की आवश्यकता है उसे देना चाहिए।

+0

ठीक है धन्यवाद, मैं लेनदेन से बचने की कोशिश कर रहा था। इसलिए जाने का एकमात्र तरीका यह है कि एक एकल एडीएमएक्स जिसमें मानव संसाधन के सभी तत्व और सूची के तत्व शामिल हैं, इस तरह यूनिटफवर्क पैटर्न ठीक काम करेगा। – pdiddy

+0

@pdiddy: आप लेनदेनस्कोप से बचने की कोशिश क्यों कर रहे हैं? –

+0

मैं यूनिटऑफवर्क पैटर्न के साथ छाप में था कि मैं लेन-देन से बच सकता हूं, क्योंकि ऑब्जेक्ट पर किए गए सब कुछ को एक ही लेनदेन लेनदेन में भेजा जाएगा, वैसे भी savechanges को कॉल करते समय। तो मैंने सोचा कि क्या मेरे पास 2 संदर्भ थे, यूनिटफॉर्फ़ पैटर्न कैसे काम करेगा, लेकिन मुझे लगता है कि मुझे 2 संदर्भ परमाणु बनाने के लिए लेनदेन का उपयोग करना होगा जो समझ में आता है। मैं इस यूनिटफवर्क पैटर्न में नया हूं इसलिए मैं इसे समझने की कोशिश कर रहा हूं। – pdiddy

2

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

+1

यह संरचना के बारे में अधिक था, क्या यह मेरे प्रोजेक्ट में व्यवस्थित है ... सब कुछ एक ही एडीएमएक्स में है, मुझे लगता है कि मुझे एक ही एडीएमएक्स में 50 टेबल पसंद हैं .. इसकी तरह की भारी डिजाइनर में इसे खोलना भ्रमित हो क्योंकि बहुत कुछ है .... लेकिन अगर यह मुझे समस्याएं लाएगा, तो आईडी को इसके बजाय एक ही एडीएमएक्स होगा। धन्यवाद – pdiddy

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