目前我的业务层几乎没什么代码,基本就是返回要操作的数据层的类,直觉告诉我不应该是这样的!namespace SimpleBLL
{
    /// <summary>
    /// 业务逻辑层
    /// </summary>
    public class AdminBLL:IAdminBLL
    {
        /// <summary>
        /// 添加管理员
        /// </summary>
        /// <param name="admin">管理员信息类</param>
        /// <returns>是否成功</returns>
        public bool Add(AdminInfo admin)
        {
            //DALFactory.CreateAdminDAL()使用工厂类返回执行管理员相关操作的类
            return DALFactory.CreateAdminDAL().Insert(admin);
        }
        /// <summary>
        /// 删除管理员
        /// </summary>
        /// <param name="id">欲删除的管理员ID</param>
        /// <returns>是否成功</returns>
        public bool Delete(int id)
        {
            //DALFactory.CreateAdminDAL()使用工厂类返回执行管理员相关操作的类
            return DALFactory.CreateAdminDAL().Delete(id);
        }
        /// <summary>
        /// 修改管理员密码
        /// </summary>
        /// <param name="id">欲修改的管理员ID</param>
        /// <param name="pwd">密码字符串</param>
        /// <returns>是否成功</returns>
        public bool UpdatePwd(int id, string pwd)
        {
            //DALFactory.CreateAdminDAL()使用工厂类返回执行管理员相关操作的类
            return DALFactory.CreateAdminDAL().UpdatePwd(id, pwd);
        }
        /// <summary>
        /// 修改管理员权限
        /// </summary>
        /// <param name="id">欲修改的管理员ID</param>
        /// <param name="pre">权限字符串</param>
        /// <returns>是否成功</returns>
        public bool UpdatePre(int id, string pre)
        {
            //DALFactory.CreateAdminDAL()使用工厂类返回执行管理员相关操作的类
            return DALFactory.CreateAdminDAL().UpdatePre(id, pre);
        }
        /// <summary>
        /// 管理员登录
        /// </summary>
        /// <param name="name">管理员名称</param>
        /// <param name="pwd">管理员密码</param>
        /// <returns>管理员类</returns>
        public AdminInfo Login(string name,string pwd)
        {
            //DALFactory.CreateAdminDAL()使用工厂类返回执行管理员相关操作的类
            return DALFactory.CreateAdminDAL().GetByNameAndPwd(name, pwd);
        }
        /// <summary>
        /// 取得所有管理员
        /// </summary>
        /// <param></param>
        /// <returns>管理员实体类集合</returns>
        public IList<AdminInfo> GetAll()
        {
            //DALFactory.CreateAdminDAL()使用工厂类返回执行管理员相关操作的类
            return DALFactory.CreateAdminDAL().GetAll();
        }
    }
}

解决方案 »

  1.   

    第一点:对。
    每个层的职责明确,展示层就不应该有业务逻辑的处理。只是将业务处理需要的数据获取,调用BLL的方法去处理,然后接收返回值绑定就行。第二点:正常。
    BLL是封装业务逻辑,DAL是数据库访问层做数据持久化的。
    如果业务逻辑只是简单CRUD这类的,你会发现,BLL层其实挺少代码,反而DAL更多代码。
    但是比如你在保存前,需要做一些校验,BLL的代码就会比较多。还比如一些算法的代码也是逻辑层里实现。
      

  2.   

    一般业务逻辑层就是根据DAL的接口进行一系列的重写如getInfroBYid(int id)  ,getinforByName(string name),=>Dal.getInfor()只做逻辑的判断,不直接与数据库直接关系,这样的好处就是当你在数据库表里添加\修改\删除字段时,只需修改Dal对应的接口就可以了,无需重写Bll里的N个方法,这就是三层里最重要的特性"偶合性"
      

  3.   

    一次下单的业务逻辑,要修改数据库的若干张表
    BLL。下单

          DAL。购物车表清除
          DAL。Order表添加
          DAL。积分表...
          .......
    }明白?当然,一些对应值操作一张表的,所以看起来都是一样的
      

  4.   

    不同意2楼的观点哈。把DAL层同BLL层方法整得完全一样的,那为什么还要BLL层,BLL层是业务逻辑的处理,DAL是直接访问数据层,就从这两个名称也应该知道他们是干什么的了嘛。
    举例说明一下吧。可能DAL层里面的方法就是 添加,删除等等这类的。
    而BLL是业务逻辑的东西,应该是领域方面的知内容,可能方法名称就是  登录,调度,分配这种之类的东西,当然登录方法里面可能是调用DAL层里的方法,但是基本上不应该一样,因为两层的形态都不一样。就像数据库里面 插入要用 insert 但是array,list之类的 插入是add,可能内容一样,但是他们是不同的层面。
      

  5.   

    每个人理解不一样吧,BLL层更多的是体现业务逻辑和业务操作,如果逻辑不多,代码确实不太多的。仅从你贴出来的一部分代码来看,都是增删改查的无业务逻辑部分,这样是很正常的。