前言:

  有了前面的工作,简单的架子基本搭建起来了,因为条件有限,只能先测试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. LDAP 原理图解

    来自为知笔记(Wiz)

  2. 【JavaScript】闭包应用之数据缓存

    最近的开发中的许多事件会被频繁的触发,由于没有做缓存的处理,每次事件触发都会后台调用一样的数据.这几天我突然意识到自己的代码有很大的优化空间,继而想起了闭包可以有缓存的功能,于是乎便对其进行了深入的研 ...

  3. seacms 6.45 命令执行漏洞分析

    前言 这是一个比较老的漏洞了,不过漏洞原理还是挺有意思的. 正文 漏洞位于 search.php 文件中. 首先包含了 common.php, 这个文件里面做了一些初始化工作,其中最重要的是对提交参数 ...

  4. 结对编程——Java实现黄金分割点游戏

    这是我和队员根据老师要求自创的一个人机黄金分割点游戏.这个小游戏在Windows10 下开发,用Eclipse做开发工具,实现语言是Java. 利用目前自己所学的Java知识实现了一人登录,电脑自行匹 ...

  5. 路飞学城知识点4之Django contenttypes 应用

    Django contenttypes 应用 contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中. 每当我们创建 ...

  6. org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/JJ]]

    1. 如果webapps下有同名的文件,会出现以上错误: 2.解决办法: 查看项目的目录结构是否正确,对于servlet项目,WEB-INF下应该有一个classes目录,存放编译好的.class文件 ...

  7. 关于Unity3d的Quaternion.LookRotation的学习

    首先,创建两个cube GameObject物件.Origin作为原点参考.Player是我们要实验的物件.如下图所示: 创建一个脚本Quat.cs,赋给Palyer cube.脚本如下: publi ...

  8. linux,强大的history命令

    如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率.本文将通过实例的方式向你介绍 history 命令的 15 个用法. 使用 HISTTIMEFORMAT ...

  9. Java实例---简单的上课管理系统

    源码分析 Course.java package com.ftl.many2many; import java.util.*; public class Course { private int cr ...

  10. magento2常见的命令

    常见的命令如下: php bin/magento list    查看所有命令列表 ----------------------------moudule相关的参数------------------ ...