小白开学Asp.Net Core《二》(补)
小白开学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《二》(补)的更多相关文章
- 小白开学Asp.Net Core《二》
小白开学Asp.Net Core<二> ——数据仓储层(Repositroy) 一.历史现象 在后端开发中,数据库操作是最频繁的,每一个开发人员都会接触,甚至不少开发人员每天的工作就是与数 ...
- 小白开学Asp.Net Core 《四》
小白开学Asp.Net Core<三> —— 使用AspectCore-Framework 一.AspectCore-Frame ...
- 小白开学Asp.Net Core 《五》
小白开学Asp.Net Core<五> —— 使用.Net Core MVC Filter 一.简介 今天在项目(https:/ ...
- 小白开学Asp.Net Core 《九》
小白开学Asp.Net Core <九> — — 前端篇(不务正业) 在<小白开学Asp.Net Core 三>中使用了X-admin 2.x 和 Layui将管理后端的界面重 ...
- 小白开学Asp.Net Core《三》
小白开学Asp.Net Core<三> ——界面 我胡汉三再次又回来了(距离上篇时间有点长),今天抽时间将最近对框架采用的后台界面做个记录 1.先上图 (图一) (图二) 2.界面说明 后 ...
- 小白开学Asp.Net Core 《十》
小白开学Asp.Net Core <十> — — Session.Cookie.Cache(老生常谈) 一.背景 在常谈Session和Cookie之前我们先来简单的了解下Http(可以说 ...
- 小白开学Asp.Net Core 《六》
小白开学Asp.Net Core <六> —— 探究.Net Core 跨平台的奥秘 1.写这篇文章的初衷 有好多朋友反馈看不懂我写的开源的一个练手项目(GitHub:https://gi ...
- 小白开学Asp.Net Core 《七》
小白开学Asp.Net Core <七> — — 探究中间件(MiddleWare) 1.何为中间件? 中间件是组装到应用程序管道中以处理请求和响应的家伙,管道中的每个组件都要满足以下两个 ...
- 小白开学Asp.Net Core 《八》
小白开学Asp.Net Core <八> — — .Net Core 数据保护组件 1.背景 我在搞(https://github.com/AjuPrince/Aju.Carefree)这 ...
随机推荐
- 网络包抓取开发包 Npcap
Npcap 是 Nmap 项目的网络包抓取库在 Windows 下的版本. Npcap 是致力于采用 Microsoft Light-Weight Filter (NDIS 6 LWF) 技术和 Wi ...
- 创业游戏模拟器 Startup 游戏试玩
买的正版游戏,还在beta阶段.因为对这种经营类的游戏挺感兴趣,结合自己也是做这个行当的.算是一次性通关了吧.我来评价一下这个游戏.足足玩了有5个多小时.从1级玩到15级.解锁了所有的内容.员工从1个 ...
- 敏捷开发中如何做好Sprint规划?
什么是Sprint规划? Sprint规划是scrum中用来启动Sprint的事件.迭代规划的目标是定义Sprint可以交付的内容,以及如何完成各项工作.迭代规划需要整个scrum团队合作完成. 与体 ...
- Spring之Bean的装配
一.Bean的装配Bean的装配,即Bean对象的创建.容器根据代码要求创建Bean对象后再传递给代码的过程,称为Bean的装配.1.默认装配方式代码通过getBean()方式从容器获取指定的Bean ...
- 利用GitLab自动同步软件仓库
利用GitLab自动同步GitHub.Gitee.Bitbucket软件仓库 我在码云的账号:userName密码:password项目地址:https://gitee.com/Bytom/bytom ...
- echarts 中国地图标注所在点
达到的效果: 1.本身是个中国地图‘ 2.直接通过经纬度标注 3.标注点可以是其他样子(比如:五角星) 4.标注点具有提示框并且鼠标可以进入 5.提示框里的链接可点击(可以添加为链接事件): 所需要技 ...
- 第五章 .net core该怎么玩
项目目标部署环境:CentOS 7+ 项目技术点:.netcore2.0 + Autofac +webAPI + NHibernate5.1 + mysql5.6 + nginx 开源地址:https ...
- Java内存区域(运行时数据区域)和内存模型(JMM)
Java 内存区域和内存模型是不一样的东西,内存区域是指 Jvm 运行时将数据分区域存储,强调对内存空间的划分. 而内存模型(Java Memory Model,简称 JMM )是定义了线程和主内存之 ...
- 高并发架构系列:Redis缓存和MySQL数据一致性方案详解
一.需求起因 在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节.所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库. 这个业务场景, ...
- c# bool类型和int类型的互转
项目过程中,会有model的一些属性字段为‘是’或‘否’ 数据库字段一半定义为int,值则是0或1 数据库model转实体类的时候,bool和int可以直接相互转换 false强转int 值就是0 t ...