您的位置:首页 > 数据库

实战才是王道:工厂模式、三层架构、反射、多数据库问题

2013-06-06 18:09 711 查看
无废话,先看结构图:



核心代码:

public interface IField
{
/// <summary>
/// //通过SQL得到数据列表
/// </summary>
/// <param name="cols">列名,可以用*</param>
/// <param name="where">条件</param>
/// <param name="orderBy">排序</param>
/// <returns></returns>
DataTable GetTable(string cols,string where,string orderBy);

/// <summary>
/// 根据主键删除数据
/// </summary>
/// <param name="appid"></param>
/// <returns></returns>
bool Delete(string appid);
}


public class FieldDal : DalBase, IField
{
public FieldDal()
{
this.TableName = "T_Fileds";
this.PkField = "AppId";
}
}


public class FieldBll
{
private IField field = DalFactory.CreateField();//工厂创建对象
public DataTable GetTable(string cols, string where, string orderBy)
{
return field.GetTable(cols, where, orderBy);
}
public bool Delete(string appid)
{
return field.Delete(appid);
}
}


工厂来了(使用反射):

public sealed class DalFactory
{
private static readonly string DbType = ConfigurationManager.AppSettings["DbType"];
private static readonly string AssemblyPath = ConfigurationManager.AppSettings["DAL"];
public static IAdmin CreateAdmin()
{
IAdmin admin = (IAdmin)Assembly.Load(AssemblyPath).CreateInstance("Dals." + DbType + "Dal.AdminDal");
return admin;
}
public static IField CreateField()
{
IField admin = (IField)Assembly.Load(AssemblyPath).CreateInstance("Dals." + DbType + "Dal.FieldDal");
return admin;
}
}


现在客户说了,软件不错,我们准备升级MSSQL版本,怎么办呢?



我们要做的就是增加MSSQL数据库的DAL层,然后修改APP.CONFIG配置文件



你可能只需要10分钟就能完成SQLITE到MSSQL数据库的升级,主要是修改一下不同数据库之间的语法问题。到这里你是否觉得很爽?

最后上代码,下载地址:http://files.cnblogs.com/AlexQY/WFA-Salary.zip,开发工具是VS2012+Sqlite,只提供雏形代码,项目还未完成,结构已经清晰了!

设计模式看了一堆,工厂模式看了一堆,有几个是真正理解并应用的?实战才是王道!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: