小白开学Asp.Net Core《二》(补)

                          ——数据仓储层(Repositroy)、服务层(Service)

---------------------------------------------------------------------------------------------------------

我胡汉三又回来了(距离上篇时间有点长),今天抽时间将最近对项目的优化写下说明。

1、Why

  读了上篇文章的朋友们都知道我在项目中(Repository 层)引入了两个常用的ORM,因此分别写了各自的接口(只能说太幼稚),现将他们整合起来。  

2、Do

 A)、现将Repository调整如下:

  (图一)

    他们之间的关系图如下:

    

    说明:

    a)、IBaseRepository接口中定义了对数据库操作的常用操作,IDapperRepository是基于Dapper 的接口定义,ISqlSugarRepository 是基于SqlSugar的接口定义。

    b)、GenericDapperRepositroyBase是对IDapperRepository的实现,GenericSqlSugarRepositoryBase是对ISqlSugarRepository的实现

    具体代码就不贴了直接到 GitHub上 去看看,这里只是说下思路。

    说明了他们的关系后,再说下 图一 中的 RepositroyBase 类

    a)、先看代码   

 using Aju.Carefree.Repositories.Dapper;
using Aju.Carefree.Repositories.SqlSugar;
namespace Aju.Carefree.Repositories
{
public abstract class RepositroyBase<T, TKey> : GenericSqlSugarRepositoryBase<T, TKey> where T : class, new()
{
public RepositroyBase(string connName) : base(connName)
{
}
} //public abstract class RepositroyBase<T, TKey> : GenericDapperRepositroyBase<T, TKey> where T : class, new()
//{
// public RepositroyBase(string connName) : base(connName)
// {
// }
//}
}

    b)、代码贴出来后,肯定都知道我要干啥了。其实这个类起到的作用就是我可以在不动Server层与Repostiroy层代码时,切换ORM(爱用那个就用那个,两个都不喜欢用了可以沿用上面的思路自己扩展个)。

  B)、Service 层

    和上面一样先上图

    (图二)

    相比较Repository层,Service层就简单多了,说白了我对该层理解就是 写 业务逻辑 的 。

    a)、那么我们来看看IService接口   

 using Aju.Carefree.Common;

 namespace Aju.Carefree.IServices
{
public interface IService<T, TKey> : IDependency where T : class, new()
{ }
}

    就是这么简单,这么简单为何要写呢?答案其实就是为了实现 IOC,其中IDependency 其实就是为了Autofac做的

    剩下的就是写业务逻辑了!!!这里就不在写了。其中在Server实现中要注意的一点就是 如下图所标红的地方

     

    好了,今天就到这里。下编再见。

C)、总结

  总结一句话,这篇文章是对上篇文章的补充,也是彻底的放弃了以前的思路。

    欢迎大家提意见和建议,共同学习!

--------------------------------------------------------------------------------------------------------------

  (本人坚信:学习是由浅到深的过程,先打基础)

    不喜勿喷!谢谢!

  GitHub地址: https://github.com/AjuPrince/Aju.Carefree

小白开学Asp.Net Core《二》(补)的更多相关文章

  1. 小白开学Asp.Net Core《二》

    小白开学Asp.Net Core<二> ——数据仓储层(Repositroy) 一.历史现象 在后端开发中,数据库操作是最频繁的,每一个开发人员都会接触,甚至不少开发人员每天的工作就是与数 ...

  2. 小白开学Asp.Net Core 《四》

    小白开学Asp.Net Core<三>                               —— 使用AspectCore-Framework 一.AspectCore-Frame ...

  3. 小白开学Asp.Net Core 《五》

    小白开学Asp.Net Core<五>                               —— 使用.Net Core MVC Filter 一.简介 今天在项目(https:/ ...

  4. 小白开学Asp.Net Core 《九》

    小白开学Asp.Net Core <九> — — 前端篇(不务正业) 在<小白开学Asp.Net Core 三>中使用了X-admin 2.x 和 Layui将管理后端的界面重 ...

  5. 小白开学Asp.Net Core《三》

    小白开学Asp.Net Core<三> ——界面 我胡汉三再次又回来了(距离上篇时间有点长),今天抽时间将最近对框架采用的后台界面做个记录 1.先上图 (图一) (图二) 2.界面说明 后 ...

  6. 小白开学Asp.Net Core 《十》

    小白开学Asp.Net Core <十> — — Session.Cookie.Cache(老生常谈) 一.背景 在常谈Session和Cookie之前我们先来简单的了解下Http(可以说 ...

  7. 小白开学Asp.Net Core 《六》

    小白开学Asp.Net Core <六> —— 探究.Net Core 跨平台的奥秘 1.写这篇文章的初衷 有好多朋友反馈看不懂我写的开源的一个练手项目(GitHub:https://gi ...

  8. 小白开学Asp.Net Core 《七》

    小白开学Asp.Net Core <七> — — 探究中间件(MiddleWare) 1.何为中间件? 中间件是组装到应用程序管道中以处理请求和响应的家伙,管道中的每个组件都要满足以下两个 ...

  9. 小白开学Asp.Net Core 《八》

    小白开学Asp.Net Core <八> — — .Net Core 数据保护组件 1.背景 我在搞(https://github.com/AjuPrince/Aju.Carefree)这 ...

随机推荐

  1. Using 3D engines with Qt(可以整合到Qt里,不影响)

    A number of popular 3D engines can be integrated with Qt: Contents [hide]  1 Ogre 2 Irrlicht 3 OpenS ...

  2. 伪元素黑魔法:一个替代onerror解决图片加载失败的方案

    问题的引出是这样的,在一个项目中有大量的页面主体是table做数据展示,所以就封装了一个table的组件,提供动态渲染的方案.有个问题是数据类型中有图片,对于图片的加载失败我们需要做容错.一般我们的思 ...

  3. SYN4201型 同步分频钟

    SYN4201型 同步分频钟 产品概述 SYN4201型同步分频钟是由西安同步电子科技有限公司精心设计.自行研发生产的一款高精度分频时钟,对输入的8路10MHz正弦信号分别进行同步分频处理,相应的输出 ...

  4. Nodejs操作MySQL - 增删改查

    先安装npm模块项目 npm init 安装mysql npm install mysql --save Nodejs 连接msyql // 导入mysql const mysql = require ...

  5. spring与springmvc父子容器

    转载地址:http://www.tianshouzhi.com/api/tutorials/spring 1.spring和springmvc父子容器概念介绍 在spring和springmvc进行整 ...

  6. 老雷socket编程之认识常用协议

    老雷socket编程之常见网络协议 1.ip IP协议是将多个包交换网络连接起来,它在源地址和目的地址之间传送一种称之为数据包的东西, 它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求. ...

  7. 【JDK8】HashMap集合 源码阅读

    JDK8的HashMap数据结构上复杂了很多,因此读取效率得以大大提升,关于源码中红黑树的增删改查,博主没有细读,会在下一篇博文中使用Java实现红黑树的增删改查. 下面是类的结构图: 代码(摘抄自J ...

  8. redis安装与php安装redis模块

    一.安装redis 1.下载 wget https://github.com/antirez/redis/archive/2.8.23.tar.gz 2.解压缩 tar -zxvf 2.8.23.ta ...

  9. Fabric1.4源码解析:Peer节点加入通道

          又开始新的阅读了,这次看的是Peer节点加入通道的过程.其实每次看源码都会有好多没有看懂的地方,不过相信只要坚持下去,保持记录,还是有很多收获的.       对于Peer节点加入通道这一 ...

  10. CSS元素的基本应用(附加京东面试题)

    ONE! 列表~ 列表分为有序列表和无序列表还有定义列表(ul和ol,dl) ul 无序列表 ul它天生自带内边距  还有一个 p 标签也是天生就自带内边距的(内边距 padding) list-st ...