2010-10-15 7 views
6

मेरे पास एक काफी सरल सवाल है जिसके लिए मुझे जवाब नहीं मिल रहा है। मेरे पास रिया सेवाओं के साथ एक चांदी की रोशनी ऐप है। DomainService वर्ग में मैं नीचे की तरह एक अद्यतन विधि है:डब्ल्यूसीएफ रिया सेवाएं चेंजसेट.गेटऑरिगिनल(): यह कैसे काम करता है?

public void UpdateConversationState(ConversationState currentConversationState) 
    { 
     var original = ChangeSet.GetOriginal(currentConversationState); 
     if (original != null) 
      ObjectContext.ConversationStatesRepository.AttachAsModified(currentConversationState, original); 
     else 
      ObjectContext.ConversationStatesRepository.Attach(currentConversationState); 
     currentConversationState.UpdDat = DateTime.Now; 
     if(original.Name != currentConversationState.Name) 
      //Do something extra 
    } 

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

या शायद कोई यह जांचने के लिए एक बेहतर तरीका जानता है कि किसी ऑब्जेक्ट की एक निश्चित संपत्ति को अद्यतन के दौरान बदला गया है या नहीं? मैं निश्चित रूप से डेटाबेस में मूल्य की तुलना कर सकता हूं, लेकिन ऐसा लगता है कि मुझे डेटाबेस में इस अतिरिक्त कॉल से बचना चाहिए।

किसी भी मदद के लिए फिर से ज्यादा :-)

संपादित की सराहना की है: बस RoundTripOriginalAttribute बारे में पता चला। ऐसा लगता है कि यह चाल है। क्या मैं सोचता हूं कि आरआईए को थोड़ा बेहतर तरीके से दस्तावेज किया जा सकता है?

+0

हां। एमएसडीएन पर दस्तावेज बहुत अच्छा नहीं है। आरआईए सर्विसेज 1.0 ब्रेकिंग चेंज डॉक्यूमेंट पर एक नज़र डालें, जिसमें RoundTripOriginalAttribute http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=RiaServices&DownloadId=8313 सहित कुछ अच्छी जानकारी शामिल है। – robertkroll

उत्तर

3

ठीक है, मैं ईएफ 4 के साथ ट्रैक इकाई परिवर्तनों की तलाश भी कर रहा हूं और कुछ googling के बाद मुझे पता चला है कि आपको उस इकाई के गुणों को "RoundTripOriginal" विशेषता लागू करने की आवश्यकता है, जिसे आप ट्रैक करना चाहते हैं, क्योंकि आरआईए (डिफ़ॉल्ट रूप से) मूल मान वापस सर्वर पर नहीं भेजता है।

मैं अब भी इस पर कुछ चिंता है और मैं गुरु से कुछ पूछा:

http://forums.silverlight.net/forums/t/218332.aspx

यह मेरे लिए काम किया, लेकिन मैं अभी भी नहीं है लगता है कि इसे से बाहर का सबसे अच्छा तरीका है।

उम्मीद है कि इससे मदद मिलती है।