第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"];
}
}
}
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"];
}
}
}