云计算 频道

Windows Azure实战:如何创建云数据存储

  第4步:创建CloudDataService文件夹

  在同一个项目中,创建一个CloudDataService文件夹,在它上面增加三个接口定义 – IdataTableService,IHasDependencyTableService和INoDependencyTableService。IDataTableService接口暴露三个基本的数据表访问功能 – Insert,Update和Delete,所有这些功能都接受Microsoft.Samples.ServiceHosting.StorageClient命名空间中定义的TableStorageEntity类参数;其它两个接口都衍生自IDataTableService接口,IHasDependencyTableService接口暴露UpdateDependencyTable()方法,它也接受TableStorageEntity类参数;INoDependencyTableService接口不暴露任何方法,但它提供了一个类型定义,用于标记一个类为无逻辑依赖数据对象。

  第5步:在CloudDataService文件夹下添加两个类

  接下来在CloudDataServices文件夹中增加两个类 – DataTableService和AddressTableService,将第一个类标记为抽象类,AddressTableService类是DataTableService类的衍生类。

  所有类和接口的代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CreateDataStorage.Models.CloudDataServices
{
    using Microsoft.Samples.ServiceHosting.StorageClient;

    
public interface IDataTableService
    {
        bool Insert(TableStorageEntity entity);
        bool Update(TableStorageEntity entity);
        bool Delete(TableStorageEntity entity);
    }

    
public interface IHasDependencyTableService : IDataTableService
    {
        bool UpdateDependencyTable(TableStorageEntity entity);
    }
public interface INoDependencyTableService : IDataTableService
    {
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CreateDataStorage.Models.CloudDataServices
{
    using Microsoft.Samples.ServiceHosting.StorageClient;
    using CreateDataStorage.Models.CloudDataContext;

    abstract
public class DataTableService
    {
        protected UserDataContext _userDataContext
= null;
        protected
string _Table { get; set; }

        
public DataTableService()
        {
            _userDataContext
= new UserDataContext();
        }

        
public UserDataContext DataContext() { return _userDataContext; }

        virtual
public bool Insert(TableStorageEntity entity)
        {
            bool success
= false;

            try
            {
                
if (this is IHasDependencyTableService)
                {
                    (this
as IHasDependencyTableService).UpdateDependencyTable(entity);
                }
                _userDataContext.AddObject(_Table, entity);
                _userDataContext.SaveChanges();
                success
= true;
            }
            catch { }

            return success;
        }

        
public bool Update(TableStorageEntity entity)
        {
            bool success
= false;

            try
   {
                
if (Delete(entity))
                {
                    success
= Insert(entity);
                }
            }
            catch { }

            return success;
        }

        virtual
public bool Delete(TableStorageEntity entity)
        {
            bool success
= false;

            try
            {
                
if (this is IHasDependencyTableService)
                {
                    (this
as IHasDependencyTableService).UpdateDependencyTable(entity);
                }
                _userDataContext.DeleteObject(entity);
                _userDataContext.SaveChanges();
                success
= true;
            }
            catch { }

            return success;
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;

namespace CreateDataStorage.Models.CloudDataServices
{
    using Microsoft.Samples.ServiceHosting.StorageClient;
    using CreateDataStorage.Models.CloudData;

    
public class AddressTableService : DataTableService, INoDependencyTableService
    {
        
public AddressTableService()
        {
            _Table
= ConfigurationManager.AppSettings["AddressTable"];
        }
    }
}
0
相关文章