2013-07-03 2 views
13

में ईटाग का उद्देश्य क्या है: इकाई के वर्तमान ETag को प्राप्त या सेट करता है। एक अद्यतन ऑपरेशन के हिस्से के रूप में किसी इकाई को अंधेरे से ओवरराइट करने के लिए इस मान को '*' पर सेट करें।ITableEntity एमएसडीएन में ईटाग के लिए ITableEntity

मैं इस संपत्ति के उद्देश्य को कम करने में असमर्थ हूं, कृपया बताएं कि हम इस संपत्ति का उपयोग क्यों कर सकते हैं।

उत्तर

1

ईटाग संपत्ति संस्थाओं का समय टिकट है। आप ReadingEnitity Event में ETag प्रॉपर्टी पढ़ सकते हैं।

void OnContextReadingEntity(object sender, ReadingWritingEntityEventArgs e) 
{ 
    string eTag = e.Data.FirstAttribute.Value; 
} 

अधिक जानकारी के लिए कृपया कम से कम अब और नहीं धागा How to use Windows Azure Table Storage Timestamp or Etag field

+5

इस समय ईटाग टाइमस्टैम्प रखता है। लेकिन आपको उस पर भरोसा नहीं करना चाहिए। यह भविष्य में बदल सकता है। ईटीएजी का उपयोग आशावादी समेकन को संभालने के लिए किया जाता है और आमतौर पर आपके कोड से उपयोग नहीं किया जाना चाहिए। यदि आपको टाइमस्टैंप संपत्ति का उपयोग करने के बजाय टाइमस्टैम्प की आवश्यकता है। ईटीएजी के बारे में अधिक जानकारी के लिए एमएसडीएन में टिप्पणियां अनुभाग पढ़ें: http://msdn.microsoft.com/en-us/library/windowsazure/dd179427 – huha

21

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

आपको परवाह क्यों है? खैर यदि आपके पास एक ही समय में एक ही आइटम को एक ही आइटम पर संपादित करने के लिए कई उपयोगकर्ता हैं, तो आप नहीं चाहते हैं कि एक उपयोगकर्ता दूसरे उपयोगकर्ता को अन्य उपयोगकर्ता को ओवरराइट करने के लिए बदल जाए, बिना दूसरे उपयोगकर्ता को अधिसूचित किया जा रहा है कि वे उस डेटा को ओवरराइट कर रहे हैं जो इसे लोड करने के बाद बदल दिया गया है ।

उदाहरण: उपयोगकर्ता 1 और उपयोगकर्ता 2 एक ही समय में एक संपादन पृष्ठ लोड करते हैं। उपयोगकर्ता 1 फ़ील्ड 1 के लिए मान बदलता है और आइटम को सहेजता है। उपयोगकर्ता 2 के बाद आइटम थोड़ा सा खुला रहता है उपयोगकर्ता 2 असंबंधित फ़ील्ड 2 में बदलाव करता है और अनजाने में पुराना फ़ील्ड 1 उनके अपडेट के साथ सहेजा जा रहा है। उपयोगकर्ता 2 को पता नहीं है कि वे उपयोगकर्ता 1 द्वारा एक परिवर्तन को त्याग रहे हैं जबतक कि आप उन्हें नहीं बताते। तो आपको क्या करना चाहिए एक त्रुटि दिखाएं कि उपयोगकर्ता 1 ने इसे पहले ही बदल दिया है और क्या वे निश्चित हैं कि वे उपयोगकर्ता 1 परिवर्तनों को ओवरराइट करना चाहते हैं या यदि वे पहले उन परिवर्तनों को देखना चाहते हैं।

यह आपके फॉर्म डिस्प्ले पर रिकॉर्ड लोड होने पर ईटीएजी को संग्रहीत करने वाले उपयोगकर्ता 1 और उपयोगकर्ता 2 दोनों द्वारा पूरा किया जाता है। जब प्रत्येक उपयोगकर्ता सहेजने का प्रयास करता है तो आप अद्यतन डेटा के साथ सर्वर पर उस ETag को पास कर सकते हैं। यह आपको कैसे बताता है कि उपयोगकर्ता 2 पुराने रिकॉर्ड को बदल रहा है? क्योंकि रिकॉर्ड में हर बदलाव उस रिकॉर्ड के लिए ईटाग को संग्रहीत करता है। तो जब उपयोगकर्ता 2 ईटैग को सहेजने का प्रयास करता है तो आप उनके परिवर्तनों के साथ भेजते हैं, मेल नहीं खाते और Azure आपको बताएगा ताकि आप इसे संभालने के लिए क्या कर सकें।

अब यदि आपको कोई परवाह नहीं है कि उपयोगकर्ता 2 उपयोगकर्ता 1 परिवर्तनों को ओवरराइट कर सकता है, तो सहेजें के साथ "*" पास करें और एटैग मेल नहीं खाता है जब एज़ूर त्रुटि नहीं देगा।

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