小白开学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. 一步步教你怎么用python写贪吃蛇游戏

    目录 0 引言 1 环境 2 需求分析 3 代码实现 4 后记 0 引言 前几天,星球有人提到贪吃蛇,一下子就勾起了我的兴趣,毕竟在那个Nokia称霸的年代,这款游戏可是经典中的经典啊!而用Pytho ...

  2. JDK JRE JVM 分别是什么

    JDK: Java Development Kit Java 开发工具包 JRE: Java Runtime Enviroment Java 运行时环境 JVM: Java Virtual Machi ...

  3. 07 jQuery的位置信息

    一.宽度和高度 获取宽度 .width() 描述:为匹配的元素集合中获取第一个元素的当前计算宽度值.这个方法不接受任何参数..css(width) 和 .width()之间的区别是后者返回一个没有单位 ...

  4. Linux 中文设置

    命令  locale,查看Linux默认系统语言 [root@VM_0_15_centos /]# locale LANG=en_US.utf8 LC_CTYPE="en_US.utf8&q ...

  5. 【win10家庭版】删除文件提示没有权限最简单的方式(已验证)

    趁着618入了新本本,预装了家庭普通版Win10,但是实际使用中遇到了一些问题.问题不大,但是着实反人类,在此吐槽! 问题: 首先,进入系统会提示你建一个账号,建立完成登录系统.本账户拥有Admini ...

  6. SQLServer常用运维SQL整理

    今天线上SQLServer数据库的CPU被打爆了,紧急情况下,分析了数据库阻塞.连接分布.最耗CPU的TOP10 SQL.查询SQL并行度配置.查询SQL 重编译的原因等等 整理了一些常用的SQL 1 ...

  7. python logging模块使用总结

    目录 logging模块 日志级别 logging.basicConfig()函数中的具体参数含义 format参数用到的格式化信息 使用logging打印日志到标准输出 使用logging.base ...

  8. Python编程菜鸟成长记--A1--01--编程语言介绍

    目录 1.重点知识 2.什么是编程?为什么要编程? 3.有哪些编程语言? 3.1.机器语言 3.2.汇编语言 3.3.高级语言 3.3.1.编译型语言 3.3.2.解释型语言 3.4.小结 4.主流编 ...

  9. 关于关闭WPS锁屏屏保及设置电脑自动关闭显示屏及休眠的分享

    最近公司工作的电脑突然自动加上了屏保锁屏,百思不得其解什么时候设置的,谁给设置的,未经用户允许就擅自给用户设置了??? 金山WPS未经用户允许给用户设置了锁屏屏保,而且这个功能非常不好用,按键盘有时候 ...

  10. C++学习书籍推荐《Effective STL(英文)》下载

    百度云及其他网盘下载地址:点我 作者简介 Scott Meyers is one of the world's foremost authorities on C++, providing train ...