技术开发 频道

细节见差别!从构架谈AzureTable开发

  在这里由于篇幅,我们只是介绍核心代码的编写。要使用Windows Azure Table,就需要创建相关的实体类,本案例中的实体类是ImageEntity,图片实体类,这个实体类是需要继承TableServiceEntity的,代码如下:

public class ImageEntity:TableServiceEntity
    {
        
public ImageEntity()
        {
            PartitionKey
= DateTime.UtcNow.ToString("yyyyMMdd");
            RowKey
= string.Format("{0:10}_{1}", DateTime.MaxValue.Ticks -
            
DateTime.Now.Ticks, Guid.NewGuid());
        }
        
public Uri FileUri { get; set; }
        
public string FileName { get; set; }
        
public long Length { get; set; }
        
public string FolderName { get; set; }
        
public bool IsReadOnly { get; set; }
        
public bool IsExists { get; set; }
        
public string FullFileName { get; set; }
        
public string ExtendName { get; set; }
        
public string CreatorName { get; set; }
        
public DateTime CreateTime { get; set; }
    }

 

  创建完图片实体类后,需要接着创建ImageContext,这个类是通过上下文环境对实体进行添加、修改、查询的类,此类需要继承自TableServiceContext,代码如下:

public class ImageContext:TableServiceContext
    {
        private const string ENTITY_NAME
= "imageentity";

        
public ImageContext(string baseAddress, StorageCredentials credentials)
            : base(baseAddress, credentials)
        {
            CloudTableClient.CreateTablesFromModel(typeof(ImageContext), baseAddress, credentials);
        }
        
public IQueryable<ImageEntity> ImageEntity
        {
            get {
return CreateQuery<ImageEntity>(ENTITY_NAME); }
        }
        
/// <summary>
        
/// Add object to table
        
/// </summary>
        
/// <param name="data">ImageEntity object to add</param>
        
public void Add(ImageEntity data)
        {
            AddObject(ENTITY_NAME, data);
            SaveChanges();
        }
        
/// <summary>
        
/// Update object
        
/// </summary>
        
/// <param name="original">Original ImageEntity object</param>
        
/// <param name="data">Updated object</param>
        
public void Update(ImageEntity original, ImageEntity data)
        {
            original.CreateTime
= data.CreateTime;
            original.CreatorName
= data.CreatorName;
            original.ExtendName
= data.ExtendName;
            original.FileName
= data.FileName;
            original.FileUri
= data.FileUri;
            original.FolderName
= data.FolderName;
            original.FullFileName
= data.FullFileName;
            original.IsExists
= data.IsExists;
            original.IsReadOnly
= data.IsReadOnly;
            original.Length
= data.Length;
            
            UpdateObject(original);

            SaveChanges();
        }
    }

 

  有关实体的类编写完成后,就对Table的操作的类(类名:StorageTable)代码进行编写,主要代码这里列出了对添加实体到Table的方法:

/// <summary>
        
/// Add object to table
        
/// </summary>
        
/// <param name="data">ImageEntity object to add</param>
        
public void Add(ImageEntity data)
        {
            Context.
Add(data);
        }

 

    这里的Context就是实体操作类的一个实例。

private ImageContext Context
        {
            get {
return new ImageContext(Account.TableEndpoint.AbsoluteUri, Account.Credentials); }
        }

 

0
相关文章