zoukankan      html  css  js  c++  java
  • MVC+Ef项目(4) 抽象业务逻辑层BLL层

    接下来,我们就要到业务逻辑层了,简单的说,业务逻辑层就是调用Repository(可以看做是DAL数据库访问层)

    先来看看项目的架构

    image

    我们现在就开始来做BLL层.  同样,先编写  UserInfoService ,这个就是调用 UserInfoRepository

    先添加对项目的引用,Model层,IRepository(数据库访问层的接口),Repository(数据库访问层),由于我们的Model是使用EF的,那么还需要引用System.Data.Entity

    image

    image

    我们先来编写 UserInfoService.cs  直接调用 DbSession下的UserInfoRepository仓储就可以了


    namespace
    YouJiao.MvcWeb.BLL { public class UserInfoService { public IDbSession DbSession { get { return new DbSession();} } public IList<UserInfo> LoadEneities(Func<UserInfo, bool> whereLambda) { return DbSession.UserInfoRepository.LoadEneities(whereLambda); } } }

    这里只是写了一个,我们可以发现  既然 UserInfoService要写这么多,那么在ProductService里面也要写这么多,于是我们也抽象出一个 BaseService出来

    namespace YouJiao.MvcWeb.BLL
    {
        public abstract class BaseService<T> where T : class ,new()
        {
            public IDbSession DbSession
            {
                get
                {
                    return new DbSession();//  暂时先这么写,一会再处理这里的实例管理
                }
            }
    
            public BaseService()
            {
                SetCurrentRepository();
            }
    
            public IBaseRepository<T> CurrentRepository { get; set; }
    
            public abstract void SetCurrentRepository();//抽象方法,作用是设置当前仓储
    
            public IList<T> LoadEneities(Func<T, bool> whereLambda)
            {
                //return DbSession.UserInfoRepository.LoadEneities(whereLambda);    //这里要怎么写?
                return CurrentRepository.LoadEneities(whereLambda);                 //我们设置一个当前仓储的属性为 CurrentRepository
            }
        }
    }


    然后是 UserInfoService 继承自 BaseService

    namespace YouJiao.MvcWeb.BLL
    {
        public class UserInfoService : BaseService<UserInfo>
        {
            public override void SetCurrentRepository()
            {
                this.CurrentRepository = this.DbSession.UserInfoRepository; // 这里的this是表示,这个是从基类里面集成来的
            }
        }
    }

    接着我们对DbSession进行一个实例的管理   DbSessionFactory

  • 相关阅读:
    预备作业03 20162308马平川
    预备作业02 20162308 马平川
    预备作业01
    采用dlopen、dlsym、dlclose加载动态链接库
    FastCGI协议分析
    Fastcgi协议定义解释与说明
    linux exec函数族
    进程通信---FIFO
    FTP协议及工作原理详解
    HTTP协议详解
  • 原文地址:https://www.cnblogs.com/joeylee/p/3628908.html
Copyright © 2011-2022 走看看