一步步构建.NET Core Web应用程序---仓储层,业务层的实现
前言
上一篇文章介绍了整个项目的结构,接下来向大家介绍一下 我的 仓储及业务层具体的实现思路,如果有更好的实现方式,希望大家及时指出!!!
构建过程
一,数据访问
首先在 DataProvider 中添加NuGet对应的 EFCore 的依赖

为了节省篇幅接下来的实体在数据库中已有对应表
这是一个简单的实体(Table指定了映射数据库中对应哪张表)

接下来添加项目应用Entities, 新建 数据库上下文对象并继承DbContext(有时候可能由于数据库上下文中单个类实体对象属性偏多所以采取分部类的形式,将一个数据库上下文按照对象关系类型分为多个具体类(如图 Sys/SysModal.cs)


二,仓储
访问单表数据我们使用仓储的形式,首先抽象出仓储的基本功能(增删改查),其他仓储在其基础上扩展
新建IBaseRepository接口

接下来实现它
这里采用了 依赖注入的方式,将数据库上下文对象及日志对象注入了进来以方便我们进行数据访问及日志收集
这里的日志对象的实现是引用了Common层的NLog日志组件

三,工作单元
访问多表数据的形式我们使用工作单元的形式,因为我们ORM使用的时EF,EF的工作模式也是仓储(DbSet)加工作单元(Db)的模式,所以我们只需要简单封装一下即可
我这里只定义了一个基本的方法Commit,其他方法按需增加
IUnitOfWork

实现工作单元
这里直接继承自AppDbContext和一个前面定义了的IUnitOfWork接口
这里的Commit我直接调用了EF的SaveChanges(EF自带的保存状态更改)

到这里我们基本的仓储就定义完成了
四,业务层
业务层其实没多少说明的的,具体的方法由业务决定,这里说明下涉及到仓储使用的部分
这里一样定义了一个抽象和实现(BaseService)这里的泛型约束了仓储是由我们定义的IBaseRepository,
然后将仓储由构造函数注入进来,这里我提供了两个构造函数一个单个仓储,一个含有工作单元,具体构造由子类决定

UserService

五,运行
建立Webapi应用程序,我这里选择的是Auth项目
打开Startup 并添加数据库上下文

添加NLog(注意:这个AddNLog方法只有添加了NLog提供的扩展才会有)


因为我们使用的是Autofac容器提供的依赖注入,所以我们将ConfigureServices方法的返回类型改为IServiceProvider

我们这里采用的是模块注入
我们诸如一个默认模块DefaultModule(这个根据需要自行调整)

DefaultModule

这样的话我们的准备就做好了,接下来看结果!
新建Home控制器并注入服务

运行查看结果

到这里我们就大功告成拉!!!
一步步构建.NET Core Web应用程序---仓储层,业务层的实现的更多相关文章
- 一步步构建.NET Core Web应用程序---基本项目结构
前言 随着.NET Core日益成熟, 我作为C#&.NET体系中的一份子也加入了.NET Core 这一体系中,随着不断学习, 接触到的各种框架日益庞杂,接下来我会由一个新手的角度把整个基于 ...
- 设计模式(一)单例模式:创建模式 ASPNET CORE WEB 应用程序的启动 当项目中 没有STARTUP.CS 类如何设置启动 配置等等
设计模式(一)单例模式:创建模式 先聊一下关于设计的几个原则(1)单一原则(SRP):一个类应该仅有一个引起它变化的原因 :意思就是 (一个类,最好只负责一件事情,并且只有一个引起它变化的原因(2)开 ...
- Building Modern Web Apps-构建现代的 Web 应用程序
Building Modern Web Apps-构建现代的 Web 应用程序 视频长度:1 小时左右 视频作者:Scott Hunter 和 Scott Hanselman 视频背景:Visual ...
- Asp.Net Core Web应用程序—探索
前言 作为一个Windows系统下的开发者,我对于Core的使用机会几乎为0,但是考虑到微软的战略规划,我觉得,Core还是有先了解起来的必要. 因为,目前微软已经搞出了两个框架了,一个是Net标准( ...
- 使用docker部署Asp.net core web应用程序
拉取aspnetcore最新docker镜像 aspnetcore的docker镜像在docker官网是有的,是由微软提供的.它的依赖镜像是microsoft/dotnet.通过访问网址:https: ...
- ASP.NET Core Web 应用程序系列(五)- 在ASP.NET Core中使用AutoMapper进行实体映射
本章主要简单介绍下在ASP.NET Core中如何使用AutoMapper进行实体映射.在正式进入主题之前我们来看下几个概念: 1.数据库持久化对象PO(Persistent Object):顾名思义 ...
- ASP.NET Core Web 应用程序系列(三)- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)
在上一章中主要和大家分享了在ASP.NET Core中如何使用Autofac替换自带DI进行构造函数的批量依赖注入,本章将和大家继续分享如何使之能够同时支持属性的批量依赖注入. 约定: 1.仓储层接口 ...
- ASP.NET Core Web 应用程序系列(二)- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)
在上一章中主要和大家分享在MVC当中如何使用ASP.NET Core内置的DI进行批量依赖注入,本章将继续和大家分享在ASP.NET Core中如何使用Autofac替换自带DI进行批量依赖注入. P ...
- ASP.NET Core Web 应用程序系列(一)- 使用ASP.NET Core内置的IoC容器DI进行批量依赖注入(MVC当中应用)
在正式进入主题之前我们来看下几个概念: 一.依赖倒置 依赖倒置是编程五大原则之一,即: 1.上层模块不应该依赖于下层模块,它们共同依赖于一个抽象. 2.抽象不能依赖于具体,具体依赖于抽象. 其中上层就 ...
随机推荐
- 搭建SFTP服务器,允许一个或多个用户拥有一个或多个目录的rwx权限
1.引言 sftp可以为传输文件提供一种安全的网络的加密方法.sftp 与 ftp 有着几乎一样的语法和功能.SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式.其实 ...
- 全球DEM数据资源下载
想找有海底地形的全球DEM数据作为三维地球展示用,发现很多都是只有陆地DEM而不带海底的,而且还需要通过Web页面进行选择然后数据下载. 找到一个学校的Ftp可以直接下载数据集,特别是这篇文章几乎汇集 ...
- 百度地图获取定位,实现拖动marker定位,返回具体的位置名
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- tf.control_dependencies
tf.control_dependencies()是用来控制计算流图的,给图中的某些节点指定计算的顺序. 原型: tf.control_dependencies(self, control_input ...
- ObjectMapper2
ObjectMapper mapper = new ObjectMapper(); try { user = mapper.read ...
- https免费证书申请certbot,nginx
官网:https://certbot.eff.org/ 下载: wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto ./certbo ...
- JavaScript label语句
使用label 语句可以在代码中添加标签,以便将来使用. 以下是label 语句的语法: label: statement 下面是一个示例: start: for (var i=0; i < c ...
- 对git使用的初步总结
使用git也才一周多,就已经深深爱上这款软件了. 之前公司一直用的是clearcase,一款老到除了公司内部的人和曾经开发这款软件的人,估计再也不会有人知道了吧! (当然也许还会有其他公司也会使用,因 ...
- JSON和Map,List,String互相转换
1)Map 和 JSON 互相转换 Map 转成 JSON Map<String, List> map = new HashMap<>(); map.put("xAx ...
- CentOS 磁盘扩容
本人对Linux本来就不是很熟,但是由于各种原因开始捣鼓CentOS(大家都说是这个系统比较好学),开始预计20G的磁盘就足够了,没想到装Oracle就直接报磁盘空间不足,更别提在Tomcat下部署近 ...