前言:

  有了前面的工作,简单的架子基本搭建起来了,因为条件有限,只能先测试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. \n\r 转义字符

    转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) ,将当前位置移到前一列 008 \f 换页(FF),将当前位置移到下页开头 012 \n 换行(LF) ,将 ...

  2. python判断一个数字是整数还是浮点数&判断整除

    判断整数还是浮点数   >>> a=123 >>> b=123.123 >>> isinstance(a,int) True >>&g ...

  3. HiJson工具 && 火狐浏览器中的jsonHandle插件(以及乱码问题的解决)-->来转换json串的格式

    原文:http://blog.csdn.net/cjm2484836553/article/details/72453907 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] ...

  4. maven(12),排除冲突JAR包

     JAR包冲突 <dependencies> <dependency> <groupId>org.springframework</groupId> ...

  5. 避免jar依赖冲突的一种办法

    java中的依赖冲突问题一直比较头疼,特别是做公用包给其他系统用的时候,现在都不敢引入太多的依赖,基本上每次都要帮别人解决依赖冲突的问题,非常麻烦. 特别是碰到一些老系统还不是用maven管理的,人家 ...

  6. 【SQL server 2012】复制数据库到另一台机器上

    当需要将一台机器(源机器)上的一个数据库完全复制到另一台机器(目标机器)上时,可以选择先在源机器上备份该数据库,然后在目标机器上还原该备份的方法. 下面详细描述具体步骤: 1. 打开SQL serve ...

  7. Python 爬虫 获取标签下面的子标签

    thr_msgs = soup.find_all('div',class_=re.compile('msg')) for i in thr_msgs: print(i) first = i.selec ...

  8. SQL Server Management Studio 2012 键盘快捷键(转)

    无论是对于DBA还是Developer,键盘快捷键都是很常用的,动动键盘可比鼠标快多了,不过SQL Server 2012对SSMS(SQL Server Management Studio)中的快捷 ...

  9. centos6.3_gcc安装软件及流程

    分享链接下载文件上传安装即可 链接:https://pan.baidu.com/s/15eUhm9LTUdHDPkXOyRb9Tg 密码:tohr # 文件内置安装脚本,直接安装即可 [root@lo ...

  10. how to drop multiple talbes in oracle use a sigle query

    Tool:PL/SQL developer Syntax:SELECT 'DROP TABLE ' || table_name || ';' FROM user_tables; 1.then you ...