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