Welcome

首页 / 软件开发 / .NET编程技术 / 对增删改查用面向对象进行包装

对增删改查用面向对象进行包装2011-09-03 博客园 姜敏已经有两年多没有做过这种后台的增删改查的工作了,最近突然接到这种性质 的工作,觉的如果还是和以前一样做的话,是不是有点太泛味了,之前的一年多本人 学习了设计模式,对面向对象的理解比以前有所增加。理解当然的想起代码重构。

增删改查,从字面上来讲,无非就是四个操作,如果我们非要定义一个名称的 话,我是这样定义的,ADD,Delete,Update,GetList,也就是说无论是针对哪张 表的维护无外乎这四个操作,唯一的不同就是每个表在维护时对于实体的操作不 同,我们一般都会把数据库的表映射到相应的实体类中,这点我们大可利用vs 2005就有的泛型来解决。下面我介绍下我的实现方式:

第一:项目结构介绍。这是不能少的。

1:MyChinaBusiness.IInterface,这个层用来放些接口或者是抽象类。

2:MyChinaBusiness.DAL,这个层是数据处理层。

3:MyChinaBusiness.BLL,这个层就是对应的业务逻辑层。

4:MyChinaBusiness.Web,这个自然是表示层了。

5:MyChinaBusiness.Model,这个层用来存放所有的实体对象。

第二:在IInterface层中创建一个抽象类DataOpration.cs,这个类是一个泛 型类。作用就是对所有的后台增删改查操作进行约束。两个抽象方法Add,Update 都非常好理解,至于下面的getList这里为什么定义了一个虚方法呢?那是因为我 对取数据以前封装了一个比较通用的方法,所以这里想直接拿来复用,但这个方 法会调用数据处理层的方法,如果直接把方法体拿过来会存在循环依赖的问题, 所以这个方法只是简单返回一个空记录集,实际调用时,会在具体的业务逻辑类 中重写它。

public abstract  class DataOpration<T>         它包含了我们常的三个方法,代码如下:         /// <summary>       /// 添加数据       /// </summary>       /// <param name="t"></param>       /// <returns></returns>      public  abstract int Add(T t);       /// <summary>       /// 修改数据       /// </summary>       /// <param name="t"></param>       /// <returns></returns>      public  abstract int Update(T t);       /// <summary>       /// 读取记录集       /// </summary>       /// <param name="iRowCount"></param>       /// <param name="iPageNumber"></param>       /// <param name="procName"></param>       /// <param name="sCondition"></param>       /// <param name="strsCompositor"></param>       /// <param name="pageCount"></param>       /// <param name="recordCount"></param>       /// <param name="iNextPageNumber"></param>       /// <returns></returns>       public virtual DataTable getList(int iRowCount, int iPageNumber, string procName, string sCondition, string strsCompositor, out int pageCount, out int recordCount, out int iNextPageNumber)       {           pageCount = 0;           recordCount = 0;           iNextPageNumber = 0;           return new DataTable();       }