前言:

  有了前面的工作,简单的架子基本搭建起来了,因为条件有限,只能先测试SqlServer的了,源码放出来,也希望有兴趣的伙伴可以一起改善,相信可以成为未来进阶架构师的第一步,自己有小项目的时候可以直接拿来修改使用。

  因为第一次在.net core搭建,经验欠缺,不足之处,欢迎批评指正。

  后面将增加日志记录。

** 温馨提示:如需转载本文,请注明内容出处。**

本文链接:https://www.cnblogs.com/grom/p/9972377.html

源码:https://github.com/Xinzheng-Li/ASP.NET-Core-WebApi

再次邀请大神们改善指点,感激不尽。

概述

  如图,像前几篇所述,简单的搭建了三层架构,本篇重点封装底层 (WebApi.Repository)。

     

说明

  • Model 层的文件夹用于EF进行从数据库拉取实体,因为没有字段备注,故将实体类修改后拖出文件夹,以免日后更新时被覆盖掉。

    

  • IDBRepository 接口,定义了最常用的五个数据库查询接口。

    

  • DBRepository 使用Dapper和Dapper.Contrib实现接口,同时指定实现接口的数据库类型,默认MSSQL,也可在派生类中改写。

    

  • ConnectionFactory 根据不同的数据库实例化Connect对象,这里因为条件有限,只写MSSQL和Mysql的,只测试了MSSQL。
  • CONN_STRING_MSSQL、CONN_STRING_MYSQL 为不同数据库的连接字符串,初始化时由Setup读取配置文件后赋值

    

  • SQLTYPE 默认数据库类型,设置后在调用ConnectionFactory.CreateSqlConnection()方法时作为缺省参数sqltype的默认值

    

  • appsettings.json 配置文件,配置数据库类型、所有数据库的配置字符串

    

  • URL: {Path}/api-docs/index.html

测试

选择Management API

    

代码所有接口均已测试,这里只列举一个

    

注意

  • 初次编译代码需要重新制定文档路径。

    

  • 发布时需要手动复制 WebApi.WebApi.xml 文件至发布目录,或者修改文件属性为复制到输出目录。

    

  • Models下 DBContext.cd 通过EF拉取实体类会生成链接数据库的字符串,不用时最好删掉,拉取方法可查看前面的文章。

添加日志

  本项目选用了NLlog作为日志输出,相信大家不会陌生。

  Setup里注入

  

  配置好配置文件便可使用,教程较多,这里不再赘述。

种草

  希望有大神帮忙扩充优化,可以成为大家开发小项目时拿过来就能用的小框架。  =。=

.net core 实践笔记(三)--封装底层的更多相关文章

  1. GuavaCache学习笔记三:底层源码阅读

    申明:转载自 https://www.cnblogs.com/dennyzhangdd/p/8981982.html 感谢原博主的分享,看到这个写的真好,直接转载来,学习了. 另外也推荐另外一篇Gua ...

  2. .net core 实践笔记(二)--EF连接Azure Sql

    ** 温馨提示:如需转载本文,请注明内容出处.** 本文链接:https://www.cnblogs.com/grom/p/9902098.html 笔者使用了常见的三层架构,Api展示层注入了Swa ...

  3. .net core 实践笔记(一)--开篇

    ** 温馨提示:如需转载本文,请注明内容出处.** 本文链接:https://www.cnblogs.com/grom/p/9902000.html  最近无聊自己设计了一个小项目,基本都使用想用没用 ...

  4. 《CMake实践》笔记三:构建静态库(.a) 与 动态库(.so) 及 如何使用外部共享库和头文件

    <CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...

  5. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  6. .NET Core学习笔记(7)——Exception最佳实践

    1.为什么不要给每个方法都写try catch 为每个方法都编写try catch是错误的做法,理由如下: a.重复嵌套的try catch是无用的,多余的. 这一点非常容易理解,下面的示例代码中,O ...

  7. Retrofit 2.0 超能实践(三),轻松实现文件/多图片上传/Json字符串

    文:http://blog.csdn.net/sk719887916/article/details/51755427 Tamic 简书&csdn同步 通过前两篇姿势的入门 Retrofit ...

  8. .net core实践系列之短信服务-架构设计

    前言 上篇<.net core实践系列之短信服务-为什么选择.net core(开篇)>简单的介绍了(水了一篇).net core.这次针对短信服务的架构设计和技术栈的简析. 源码地址:h ...

  9. .net core实践系列之短信服务-Sikiro.SMS.Api服务的实现

    前言 上篇<.net core实践系列之短信服务-架构设计>介绍了我对短信服务的架构设计,同时针对场景解析了我的设计理念.本篇继续讲解Api服务的实现过程. 源码地址:https://gi ...

随机推荐

  1. Teamviewer 手机端怎么使用右键-已解决

    Teamviewer 手机端怎么使用右键 可能很多人和我一样,关掉了那个提示,然后记不住操作 怎么控制电脑使用右键? 长按就可以了 拖到指定地点,然后长按不送,就会出来电脑右键菜单

  2. android头像上传(获取头像加剪切)

    因为项目中需要用到头像上传的功能,所以就下个Ddmo先来实现下. demo我是类似仿微信的,在一个GridView中展示所有的图片,其中第一个item可以去照相:获取到图片后再进行剪切. 图片的剪切是 ...

  3. Ajax的初体验

    一.AJAX的介绍 Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术. Ajax =  ...

  4. Week3——Session

    Session 一.Session是会话技术的一种.会话技术分为Cookie和Session.Cookie是数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端可以清除cookie: S ...

  5. Azure 中部署Gitlab的方法

    一.Azure 中创建Gitlab虚拟机(1).登陆Azure:打开Azure 官网,点击右侧上方的登陆Azure门户,输入Azure帐号与密码,点击 登陆 . (2).创建Gitlab虚拟机:登陆A ...

  6. Zabbix 3.0 for Ubuntu 14.04 LTS 安装

    准备工作 apt-get install gettextapt-get install unzipapt-get install rar一.安装主程序 代码: 全选wget http://repo.z ...

  7. Linux下调节CPU使用的几种方法

    一,使用taskset充分利用多核cpu,让cpu的使用率均衡到每个cpu上 #taskset-p,    设定一个已存在的pid,而不是重新开启一个新任务-c,    指定一个处理,可以指定多个,以 ...

  8. exchange 2010 邮件服务器owa证书更新

    exchange 2010应用环境 四台前端服务器,两台位于DMZ区,两台位于办公网环境,办公网和DMZ的服务器做了NLB负载均衡,操作系统为windows server 2008 r2. 目前前端h ...

  9. 深入剖析php执行原理(2):函数的编译

    本文只探讨纯粹的函数,并不包含方法.对于方法,会放到类.对象中一起研究. 想讲清楚在zend vm中,函数如何被正确的编译成op指令.如何发生参数传递.如何模拟调用栈.如何切换作用域等等,的确是一个很 ...

  10. 解决pycharm 提示no tests were found的问题

    在使用pycharm,做日志模块封装,代码中觉得没有问题,运行就提示no  tests were found 查询了下这个问题,原因是我创建的类名是以test方法开头,类似这样 不知道是不是把它默认当 ...