本节讲解业务逻辑层BLL。很简单和DAO层类似,通过泛型封装相似的功能到父类,其他子类继承父类即可,具体看下面操作。
1. 在解决方案上右键新建一个类库,命名为IBLL,用来存放业务逻辑接口层代码,并添加引用实体层Model,数据库访问接口层IDAO;
2. 在类库中添加一个父接口,命名为IBLL,并定义常用的方法,代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using IDAO; namespace IBLL { public interface IBLL<T> { IDAO<T> Dao { get; set; } /// <summary> /// 添加实体 /// </summary> /// <param name="entity"></param> int Add(T entity); /// <summary> /// 修改实体 /// </summary> /// <param name="entity"></param> void Update(T entity); /// <summary> /// 保存或修改实体 /// </summary> /// <param name="customer"></param> void SaveOrUpdate(IList<T> list); /// <summary> /// 删除实体 /// </summary> /// <param name="entity"></param> void Delete(T entity); /// <summary> /// 按条件删除 /// </summary> /// <param name="sqlWhere">删除条件</param> void Delete(string sqlWhere); /// <summary> /// 根据ID得到实体 /// </summary> /// <param name="id"></param> /// <returns></returns> T Get(int id); /// <summary> /// 根据ID得到实体 /// </summary> /// <param name="id"></param> /// <returns></returns> T Load(int id); /// <summary> /// 得到所有实体 /// </summary> /// <returns></returns> IList<T> LoadAll(); /// <summary> /// 按条件排序得到前N条记录 /// </summary> /// <param name="top">获取条数</param> /// <param name="field">排序字段</param> /// <param order="field">排序方式,升序asc,降序desc</param> /// <returns></returns> IList<T> QueryTop(int top, string field, string order = "asc"); /// <summary> /// 根据条件得到实体 /// </summary> /// <param name="sqlWhere">查询条件</param> /// <returns></returns> IList<T> Where(string sqlWhere=""); /// <summary> /// 得到统计数量 /// </summary> /// <param name="strWhere">查询条件</param> /// <returns></returns> int GetRecordCount(string strWhere = ""); /// <summary> /// 分页获取数据列表 /// </summary> /// <param name="PageSize">每页获取数据条数</param> /// <param name="PageIndex">当前页是第几页</param> /// <param name="strWhere">查询条件</param> /// <returns></returns> IList<T> GetPageList(int PageSize, int PageIndex, string strWhere = ""); /// <summary> /// 根据数据字典父编码和编码获取名称 /// </summary> /// <param name="parentNumber">父编码</param> /// <param name="number">编码</param> /// <returns></returns> string GetName(string parentNumber, string number); /// <summary> /// 获取该父编码下最大编码 /// </summary> /// <param name="parentNumber">父编码</param> /// <returns></returns> string GetMaxNumber(string parentNumber); } }
3.定义好了父接口,下面定义子接口,还是以IT_RoleBLL为例,代码如下:
using System; using Model; namespace IBLL { public interface IT_RoleBLL : IBLL<T_Role> { } }
这样,IT_RoleBLL就拥有了IBLL定义了的方法,如果IT_RoleBLL有特殊方法,直接添加在IT_RoleBLL里面即可,以IT_AreaBLL为例,代码如下:
using Model; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace IBLL { public interface IT_AreaBLL : IBLL<T_Area> { int GenerateAreaNumber(string parentNumber); } }
最后,我们看一下IBLL层的目录结构:
版权声明:本文为博主原创文章,未经博主允许不得转载。
『Spring.NET+NHibernate+泛型』框架搭建之BLL(四)
原文地址:http://blog.csdn.net/wb09100310/article/details/47271555