• EF5+MVC4系列(6) 简单三层的搭配(泛型) 实现 增删改查


    1:项目结构

    image

    2:每层添加对其他层的引用,这里我们把除了Web层之外的所有的层生成的文件都放到解决方案下的Library文件夹下,然后每个项目分别来引用里面的dll项目文件.

    我们在Model项目上,右键属性->生成-> 在下面的输出里面,选择上一级的 Library文件夹

    image

    image

    2.2 我们调整项目的生成顺序 ,在解决方案或者是任意项目上右键,选择 生成依赖项,调整各个项目的依赖,这样的目的就是调整项目的生成顺序.

    注意,这里你选择依赖项,并没有给项目与项目之间增加了dll的引用,只是单纯的修改了他们的项目生成顺序而已.

    BLL层依赖 Common层,Model层

    Common依赖 Model层

    Repository依赖 Model和Common层

    BLL依赖 Model,Common,Repository层

    UI层依赖上面的所有的层,那么调整完毕后的项目生成顺序如下

    image

    image  最后的生成顺序是  image

    我们把整个项目编译一下,看看各个项目的生成顺序.

    image

    2.3 我们对各个项目进行引用.

    BLL引用 Library文件夹下        Common层,Model层  生成的dll文件

    Common 引用 Library文件夹下   Model层  生成的dll文件

    Repository 引用 Library文件夹下  ModelCommon层  生成的dll文件

    BLL引用  Library文件夹下           Model,Common,Repository层  生成的dll文件

    UI 层 引用 Library 文件夹下   Model,Common,BLL层 (不用引用 Repository层) 生成的dll文件

    image

    3: 在 Model层,添加EF实体框架,并且把 app.config 里面的链接字符串 拷贝到 UI层里面的 web.config 里面

    4:开始编写 Repository 数据库访问层的代码 

    4.1 编写UserInfoRepository

    UserInfoRepository 用户表的数据库访问代码


    4.2 考虑到我们有多个表,每个表都有这些增删改查,所以我们重构一下,写一个 BaseRepository 类

    image

    BaseRepository


    5 .我们编写 BLL层 业务逻辑层的代码, 首先是  UserInfoService.cs  ,由于 业务逻辑层也是有很多代码,所以我们也是抽象出一个 BaseService.cs 父类出来

    image

    BaseService

    然后我们的UserInfoService.cs  用户表业务逻辑操作类 只需要继承一下这业务基类就可以了

    image

    但是这里有个问题,如果是我们 UserInfoRepository 用户表的数据库访问层,有一个单独的功能,只是针对这个表的(也就是BaseRepository里面没有这个功能),那么我们在 UserInfoService里面,由于继承的是 BaseService 父类,而父类里面的DAL层是使用的 BaseRepository (数据库访问层的基类),那么 UserInfoService里面的dal层也是 BaseRepository, 这样就调用不到  UserInfoRepository 里面的方法了

    image

    解决方法就是在 BaseService里面,把 添加一个  抽象方法 SetCurrentRepository ,专门由子类进行重构,这个方法的作用就是重写父类的 CurrnetRepository来进行new一个数据操作子类

    image

    6. 我们在UI层 进行调用

    image

  • 相关阅读:
    Vue部分知识
    JAVA基础之Map接口
    浏览器渲染机制及五大浏览器、四大内核
    WebPack
    Gulp
    GC垃圾回收机制
    Git操作(及操作github)
    Git、Github和GitLab的区别及与SVN的比较
    Node.js介绍
    JAVA基础之Set接口
  • 原文地址:https://www.cnblogs.com/joeylee/p/3851710.html
Copyright © 2020-2023  润新知