2010-02-26 19 views
12

पिछले साल मैं अपने प्रोजेक्ट इकाई की रूपरेखा (बेशक .NET3.5) का उपयोग कर के लिए एक डेटा का उपयोग सेवा विकसित किया है और एक गाइड के विकसित राज्य ट्रैकिंग POCO वस्तुओं के रूप में जूली Lerhman की पुस्तक का उपयोग कर। हम डब्ल्यूसीएफ का उपयोग करते हैं और सिल्वरलाइट 3 क्लाइंट भी हैं। हम .NET 4.0 पर जा रहे हैं और मैं पीओसीओ कक्षाओं और अनुवाद कक्षाओं को लिखने वाले बर्बाद डेवलपर समय को खत्म करने के लिए कोड जनरेशन का उपयोग करने के लिए स्विच करना चाहता हूं।EF4 POCO: स्नैपशॉट बनाम स्व ट्रैकिंग WCF अधिक

1) बदल दिया है पर नज़र रखी प्रॉक्सी: हमारे लिए उपयोगी हो ऐसा नहीं लगता है ऐसा लगता है के रूप में इस WCF पर काम नहीं करता

अनुसंधान मैं वहाँ किया है के साथ राज्य ट्रैकिंग Pocos के 3 तरीके हो रहा है क्रमबद्धता।

2) स्नैपशॉट आधारित: जब POCO इकाई ग्राफ़ लिया गया है स्नैपशॉट लिया जाता है, ग्राहक से ग्राफ लौटे कि स्नैपशॉट के साथ तुलना की जाती है और मतभेदों की तुलना में कर रहे हैं ... मेरे लिए बहुत अच्छा लगता है।

3) स्व ट्रैकिंग संस्थाओं: कोड जनरेटर POCO वस्तुओं के भीतर स्वयं ट्रैकिंग करने के लिए तर्क उत्पन्न करता है। ऐसा लगता है कि अब हम जो करते हैं उसके करीब यह सब हमारे लिए उत्पन्न होता है।

मैं बाहर काम करने के क्या फायदे और नुकसान इन सभी विधियों के बीच हैं कोशिश कर रहा हूँ। मुझे लगता है कि 1 और 2 "कनेक्ट" हैं और उन्हें ऑब्जेक्ट कॉन्टेक्स्ट की आवश्यकता है कि पीओसीओ मूल रूप से तत्काल रहने के लिए पूछे गए थे, लेकिन इसकी पुष्टि करने में सक्षम नहीं हैं। मुझे यह भी कोई कारण नहीं दिखता कि कोई भी वास्तव में विकल्प 1 से परेशान क्यों होगा क्योंकि विकल्प 3 वही और अधिक करता है ...

स्नैपशॉट मेरे लिए सबसे आसान लगता है, लेकिन अगर इसके लिए ऑब्जेक्ट कॉन्टेक्स्ट खोलने की आवश्यकता है लंबे समय तक मुझे इतना यकीन नहीं है ...

मैं केवल एक जूनियर प्रोग्रामर हूं, इसलिए यहां कोई सलाह है, खासकर सिल्वरलाइट 3 के संबंध में (मुझे लगता है कि सिल्वरलाइट 3 के साथ विकल्प 2 और 3 काम पर 2 समस्याएं हो सकती हैं) बहुत सराहना की है।

+0

एक अद्यतन के रूप में, मैं अब हमारे WCF/सिल्वरलाइट 4 आवेदन में राज्य ट्रैक संस्थाओं का उपयोग कर रहा है और वे बहुत अच्छी तरह से काम करते हैं (हटाता है के साथ मुद्दों कर यद्यपि)। नेविगेशन प्रॉपर्टी अब ट्रैक करने योग्य चयन हैं जो ऑब्जर्जेबल कोलेक्शन से प्राप्त होती हैं ताकि एक सपने में एक्सएएमएल के लिए बाध्यकारी हो। मैं इस समाधान को बहुत अधिक समझता हूं। – MrLane

+0

http://stackoverflow.com/questions/3814706/self-tracking-entities-vs-poco-entities और http://stackoverflow.com/questions/6116002/entity-framework-self-tracking-entities के संभावित डुप्लिकेट -vs-poco –

उत्तर

14

विकल्प 3 के साथ जाएं। स्व-ट्रैकिंग इकाइयां जिन्हें वे डिजाइन किए गए हैं।

This post एक अच्छा प्रदर्शन देता है "स्व ट्रैकिंग संस्थाओं क्रमबद्धता परिदृश्यों के लिए अनुकूलित कर रहे हैं"।

+10

सेल्फ-ट्रैकिंग-एंटिटीज (एसटीई) में एक बड़ी कमी है। एसटीई के लिए ठीक से काम करने के लिए आपको टी 4 कोड-जनरेटर द्वारा उत्पन्न कोड साझा करना होगा। इसका अर्थ यह है कि आप क्लाइंट पक्ष पर डेटा सेवा संदर्भ मेटाडेटा जेनरेटेड क्लासेस का उपयोग नहीं कर सकते हैं, इस प्रकार केवल .NET क्लाइंट पक्ष की सीमा है। –

+0

हां आप क्लाइंट प्रॉक्सी उत्पन्न करने में सक्षम नहीं होने के बारे में सही हैं। हमने अपने प्रॉक्सी को हाथ से कोड किया और क्लाइंट पर कोड साझा किया। तकनीकी रूप से आप केवल अपने .NET या Silverlight क्लाइंट के साथ इकाइयों वाली बाइनरी साझा कर सकते हैं (यदि आपका क्लाइंट सिल्वरलाइट है तो आपको सिल्वरलाइट के साथ एक .dll संगत बनाना होगा)। – MrLane

+0

अब और नहीं। अब एसटीई की सिफारिश नहीं की जाती है। – DarthVader

2

अन्य दो विकल्प केवल तब लागू होते हैं जब ऑब्जेक्ट कॉन्टेक्स्ट के आसपास परिवर्तन होते हैं। आपका एकमात्र विकल्प एसटीई है। एसटीई के साथ, संस्थाएं अपने स्वयं के परिवर्तनों का ट्रैक रखती हैं। जब संशोधित ऑब्जेक्ट ग्राफ़ सर्वर पर भेजा जाता है, तो आप नीचे दिखाए गए अनुसार उन परिवर्तनों को चला सकते हैं। डीबी। ग्राहक। एप्लाइच चेंज (ग्राहक); db.SaveChnages();

STE साथ, आप एक वर्ग पुस्तकालय परियोजना में अपने entiites बना सकते हैं और एक WCF ग्राहक, Silverlight ग्राहक, asp.net और WPF के बीच साझा कर सकते हैं। तो यह आपको विभिन्न ग्राहकों के लिए इकाइयों का पुन: उपयोग देता है।

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