2013-07-03 13 views
13

'da ETag'ın amacı nedir: Varlığın geçerli ETag'sini alır veya ayarlar. Bir varlığın bir güncelleme işleminin bir parçası olarak körü körüne yazılması için bu değeri '*' olarak ayarlayın.ITableEntity MSDN'de ETag için ITableEntity

Bu özelliğin amacını anlayamıyorum, lütfen bu özelliği neden ve ne zaman kullanabileceğimizi açıklayın.

cevap

1

Şirketinin zaman damgası, VERag özelliğidır. ETag özelliğini ReadingEnitity Etkinliğinde okuyabilirsiniz. Daha detaylı bilgi için

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

en azından artık değil ETag damgası olmayan iplik How to use Windows Azure Table Storage Timestamp or Etag field

+5

Şu an ETag zaman damgasını tutuyor. Ama buna güvenmemelisin. Gelecekte değişebilir. ETag, iyimser eşzamanlılığı ele almak için kullanılır ve genellikle kodunuzdan kullanılmamalıdır. Zaman damgası özelliğini kullanmak için zaman damgası gerekiyorsa. ETag hakkında daha fazla bilgi için msdn'daki Açıklamalar bölümünü okuyun: http://msdn.microsoft.com/en-us/library/windowsazure/dd179427 – huha

21

aşağıdaki tartışma bakın veya edebilirsiniz. Kaydın en son güncellendiği zaman olan başka bir Timestamp özelliği var. ETag eşzamanlılık için kullanılır. Bir tablo varlığını yüklerseniz ve bunu güncellemek istiyorsanız, ETag'ı değeri yüklediğinizde güncellemeye geçirirsiniz ve yalnızca bu ETAG'nin depolananla eşleşmesi durumunda varlığı günceller.

Neden umurundasınız? Aynı öğede aynı öğeyi aynı anda düzenleyen birden çok kullanıcınız varsa, bir kullanıcının diğer kullanıcının üzerine yazmasını istemezsiniz. İkinci kullanıcı, yüklendikten sonra değiştirilen verilerin üzerine yazıldığından haberdar edilir. .

Örnek: kullanıcı 1 ve kullanıcı 2 aynı anda bir düzenleme sayfası yükler. Kullanıcı 1, alan 1 için bir değeri değiştirir ve öğeyi kaydeder. Kullanıcı 2 öğeyi daha uzun bir süre sonra açtıktan sonra, kullanıcı 2 ilgisiz alan 2'de bir değişiklik yapar ve bilinmeyen bir şekilde güncel olmayan alan 1 güncellemeleri ile kaydedilir. Kullanıcı 2, bunları söylemediğiniz sürece, kullanıcı 1 tarafından yapılan bir değişikliği attığını bilmiyor. Yapmanız gereken şey, kullanıcının 1'in onu değiştirdiği ve kullanıcı 1'in değişikliklerinin üzerine yazmak istedikleri veya bu değişiklikleri ilk önce görmek istedikleriden emin oldukları bir hatayı göstermektir.

Bu, hem kullanıcı 1 hem de kullanıcı 2 tarafından, ETag'ın kaydın form ekranınızda gizlendiği zamandan saklanmasıyla gerçekleştirilir. Her kullanıcı bir kaydetmeyi denediğinde, bu ETag'ı güncellenmiş verilerle sunucuya iletebilirsiniz. Bu, size 2. kullanıcının tarih dışı bir kaydı değiştirdiğini nasıl söyler? Çünkü kayıttaki her değişiklik, o kayıt için saklanan ETag'ı günceller. Bu yüzden, kullanıcı 2 değişiklikleri gönderdiğiniz gönderen ETag'ı kaydetmeyi denediğinde, Azure ne yapacağını halledebilmeniz için size söyleyecektir.

Eğer kullanıcı 2'nin kullanıcı 1 değişikliklerinin üzerine yazabileceğini umursamıyorsanız, kaydetme ile "*" yi geçirin ve ETag eşleşmediğinde Azure bir hata vermeyecektir.

İlgili konular