码迷,mamicode.com
首页 > 编程语言 > 详细

『Spring.NET+NHibernate+泛型』框架搭建之BLL(四)

时间:2015-08-04 09:26:23      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:bll   .net   泛型   

  本节讲解业务逻辑层BLL。很简单和DAO层类似,通过泛型封装相似的功能到父类,其他子类继承父类即可,具体看下面操作。


一、业务逻辑接口层IBLL

  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(四)

标签:bll   .net   泛型   

原文地址:http://blog.csdn.net/wb09100310/article/details/47271555

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!