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

  • 相关阅读:
    large_IPYi_09ef000018c21215
    large_IPYi_09ef000018c21215
    large_IPYi_09ef000018c21215
    关于我
    关于我
    SOAP-1概述
    从零开始搭建自己的.NET Core Api框架-1目录
    Asp.Net Core 轻松学系列-5利用 Swagger 自动生成接口文档
    Asp.Net Core 轻松学系列-4玩转配置文件
    Asp.Net Core 轻松学系列-3项目目录和文件作用介绍
  • 原文地址:https://www.cnblogs.com/joeylee/p/3628908.html
Copyright © 2011-2022 走看看