MVC项目结构搭建及单个类的实现学习笔记1

2019-05-22 08:50:41王旭

业务逻辑层的构建

业务类基类BaseService

using System;
using System.Linq;
using System.Linq.Expressions;
using PMS.DALFactory;
using PMS.IDAL;

namespace PMS.BLL
{
  public abstract class BaseService<T> where T:class,new()
  {
    public IDbSession CurrentDbSession
    {
      get
      {
        return new DbSession();
      }
    }
    public IBaseDal<T> CurrentDal { get; set; }
    public abstract void SetCurrentDal();
    public BaseService()
    {
      SetCurrentDal();//子类一定要实现抽象方法,以指明当前类的子类类型。
    }

    /// <summary>
    /// 查询过滤
    /// </summary>
    /// <param name="whereLambda"></param>
    /// <returns></returns>
    public IQueryable<T> LoadEntities(Expression<Func<T, bool>> whereLambda)
    {
      return CurrentDal.LoadEntities(whereLambda);
    }

    /// <summary>
    /// 分页
    /// </summary>
    /// <typeparam name="s"></typeparam>
    /// <param name="pageIndex"></param>
    /// <param name="pageSize"></param>
    /// <param name="totalCount"></param>
    /// <param name="whereLambda"></param>
    /// <param name="orderbyLambda"></param>
    /// <param name="isAsc"></param>
    /// <returns></returns>
    public IQueryable<T> LoadPageEntities<s>(int pageIndex, int pageSize, out int totalCount, Expression<Func<T, bool>> whereLambda,
      Expression<Func<T, s>> orderbyLambda, bool isAsc)
    {
      return CurrentDal.LoadPageEntities<s>(pageIndex, pageSize, out totalCount, whereLambda, orderbyLambda, isAsc);
    }

    /// <summary>
    /// 删除
    /// </summary>
    /// <param name="entity"></param>
    /// <returns></returns>
    public bool DeleteEntity(T entity)
    {
      CurrentDal.DeleteEntity(entity);
      return CurrentDbSession.SaveChanges();
    }

    /// <summary>
    /// 编辑
    /// </summary>
    /// <param name="entity"></param>
    /// <returns></returns>
    public bool EditEntity(T entity)
    {
      CurrentDal.EditEntity(entity);
      return CurrentDbSession.SaveChanges();
    }

    /// <summary>
    /// 添加数据
    /// </summary>
    /// <param name="entity"></param>
    /// <returns></returns>
    public T AddEntity(T entity)
    {
      CurrentDal.AddEntity(entity);
      CurrentDbSession.SaveChanges();
      return entity;
    }
  }
}

UserService类:

using PMS.IBLL;
using PMS.Model;

namespace PMS.BLL
{
  public partial class UserService : BaseService<User>
  {
    public override void SetCurrentDal()
    {
      CurrentDal = CurrentDbSession.UserDal;
    }
  }
}

 

业务逻辑接口层的构建

直接建立对应的接口并使用UserService类实现IUserService接口