2010-02-16 9 views
19

Böyle bir sınıf varsa:Bir mülkün Azure Table depolama biriminde kalıcı olmasını nasıl engellersiniz?

public class Facet : TableServiceEntity 
{ 
    public Guid ParentId { get; set; }  
    public string Name { get; set; } 
    public string Uri{ get; set; } 
    public Facet Parent { get; set; } 
} 

Veli parentId Guid türetilmiştir ve bu ilişki benim depo tarafından doldurulacak amaçlanmıştır. Peki, Azure’a bu alanı yalnız bırakmasını nasıl söyleyebilirim? Bazı türlerde Ignore özniteliği var mı yoksa bunun yerine bu ilişkileri sağlayan bir miras sınıfı mı oluşturmalıyım?

+0

Onlar şimdi yapmak http://stackoverflow.com/questions/5379393/do-azure-table -services-varlıklar-var-bir-eşdeğer-of-nonserializedattribute –

cevap

4

Bu cevap Andy Cross at bwc --- Tekrar teşekkür ederim Andy. This question an azure forums

Merhaba,

WritingEntity ve ReadingEntity olaylarını kullanın. http://msdn.microsoft.com/en-us/library/system.data.services.client.dataservicecontext.writingentity.aspx Bu size ihtiyacınız olan tüm kontrolü verir. Başvuru için

burada da kapalı bağlantılı bir blog yazısı var: http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/d9144bb5-d8bb-4e42-a478-58addebfc3c8

Teşekkür Andy

+2

Ne yazık ki forum bağlantıları artık işe yaramıyor :-(MSDN gerçekten onun bağlantılarını berbat! –

3

Sen TableEntity içinde WriteEntity yöntemini geçersiz ve özel özellik olan herhangi özelliklerini kaldırabilir.

public class CustomTableEntity : TableEntity 
{ 
    public override IDictionary<string, EntityProperty> WriteEntity(Microsoft.WindowsAzure.Storage.OperationContext operationContext) 
    { 
     var entityProperties = base.WriteEntity(operationContext); 
     var objectProperties = GetType().GetProperties(); 

     foreach (var property in from property in objectProperties 
           let nonSerializedAttributes = property.GetCustomAttributes(typeof(NonSerializedOnAzureAttribute), false) 
           where nonSerializedAttributes.Length > 0 
           select property) 
     { 
      entityProperties.Remove(property.Name); 
     } 

     return entityProperties; 
    } 
} 

[AttributeUsage(AttributeTargets.Property)] 
public class NonSerializedOnAzureAttribute : Attribute 
{ 
} 

kullanım

public class MyEntity : CustomTableEntity 
{ 
    public string MyProperty { get; set; } 

    [NonSerializedOnAzure] 
    public string MyIgnoredProperty { get; set; } 
} 
8

dışlamak istediğiniz özellikte ayarlanabilir WindowsAzure.Table.Attributes.IgnoreAttribute adında bir özellik vardır. Sadece kullanın: https://github.com/dtretyakov/WindowsAzure

veya paket olarak yüklemek: https://www.nuget.org/packages/WindowsAzure.StorageExtensions/

kütüphane MİT lisanslı

[Ignore] 
public string MyProperty { get; set; } 

Size indirse, Windows Azure Depolama Uzantıları bir parçasıdır. (Yukarı v6.2.0 ve) son Microsoft.WindowsAzure.Storage SDK kullanarak

+3

Bu yana 'IgnorePropertyAttribute' tarafından yerini almıştır, bkz. [IgnorePropertyAttribute Sınıf] (https://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storage.table.ignorepropertyattribute.aspx). – Aaron

15

, özellik adı IgnorePropertyAttribute değişti:

public class MyEntity : TableEntity 
{ 
    public string MyProperty { get; set; } 

    [IgnoreProperty] 
    public string MyIgnoredProperty { get; set; } 
}