一般现在的asp.net程序都是采用三层结构开发.
一般分为模式,数据业务逻辑层,业务逻辑层,表现层.
为了使开发出来的项目支持多种服务库,比如:ACCESS,SQLSERVER,MYSQL..中间加了一个数据业务逻辑接口层.定义统一的接口.
例:
namespace ADDPaper.IDAL
{
/// <summary>
/// Interface for the Order DAL
/// </summary>
public interface IOrder
{
/// <summary>
/// Method to insert an order header
/// </summary>
/// <param name="order">Business entity representing the order</param>
/// <returns>OrderId</returns>
///
void Insert(OrderInfo order);
/// <summary>
/// Reads the order information for a given orderId
/// </summary>
/// <param name="orderId">Unique identifier for an order</param>
/// <returns>Business entity representing the order</returns>
OrderInfo GetOrder(int orderId);
}
}
然后在开发需要支持的服务库业务逻辑,不同的数据库,对应的业务逻辑也有所不同.我们这里需要把每个数据操作的方法都写好.
例:
namespace ADDPaper.AccessOrder
{
public class order: IDAL.IOrder
{
public void Inser(OrderInfo order)
{
//实现ACCESS插入的代码;
}
}
}
namespace ADDPaper.SQLServerOrder
{
public class order: IDAL.IOrder
{
public void Inser(OrderInfo order)
{
//实现SQLServer插入的代码;
}
}
}
到了BLL层,当要向数据库插入记录时,代码可以这样写:
IDAL.IOrder order;
string databasename="sqlserver";//要用的数据库
swich(databasename)
{
case "sqlserver":
order=new SQLServerOrder.order();
break;
case "Access":
order=new AccessOrder.order();
break;
}
当然这里处理你可以使用反射来创建相应的类.
在封装组件的时候,使用者在调用方法的时候,不需要知道究竟是用什么数据库对象,只需要调用接口来得到数据库处理方法就可以了。