早早就想入门netcore,一直没下定决心,这次正好碰上项目服务变更,便想着入坑试试,边学边用。

目标:

一.api使用core版的SqlSugar,集成orm,实现快速开发

二.api使用Swagger,实现api文档管理

三.api添加身份验证功能

开发环境:

Win10、VS2017、oracle11g

一.api使用core版的SqlSugar,集成orm,实现快速开

1.1一步一步来,很简单

F5运行

初步搭建完成。

1.2添加SqlSugar项目

下载地址:https://github.com/sunkaixuan/SqlSugar

下载后解压,将Asp.NetCore2里的SqlSugar文件夹拷贝到api项目根目录下,解决方案添加SqlSugar项目。

1.3添加其他项目

总体依赖关系:

JH.OPEMR.DBUtility:SqlSugar、JH.OPEMR.Model       实现db实例化,供业务层调用

JH.OPEMR.BLL:JH.OPEMR.DBUtility、JH.OPEMR.Model、JH.OPEMR.Common     业务层,供视图 或 api层调用

JH.OPEMR.API:JH.OPEMR.BLL、JH.OPEMR.Model、JH.OPEMR.Common

JH.OPEMR.DBUtility层:

该层主要提供db上下文,给业务层调用,使用官方提供的上下文即可

全部代码:

  1. using SqlSugar;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5.  
  6. namespace JH.OPEMR.DBUtility
  7. {
  8. public class DbContext<T> where T : class, new()
  9. {
  10. public DbContext()
  11. {
  12. Db = new SqlSugarClient(new ConnectionConfig()
  13. {
  14. ConnectionString = "Data Source=192.168.11.43/xxx;User ID=xx;Password=xx;",
  15. DbType = DbType.Oracle,
  16. InitKeyType = InitKeyType.Attribute,//从特性读取主键和自增列信息
  17. IsAutoCloseConnection = true,//开启自动释放模式和EF原理一样我就不多解释了
  18.  
  19. });
  20. //调式代码 用来打印SQL
  21. Db.Aop.OnLogExecuting = (sql, pars) =>
  22. {
  23. //Console.WriteLine(sql + "\r\n" +
  24. // Db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
  25. Console.WriteLine();
  26. };
  27. }
  28. //注意:不能写成静态的
  29. public SqlSugarClient Db;//用来处理事务多表查询和复杂的操作
  30. public SimpleClient<Model.USERS> StudentDb { get { return new SimpleClient<Model.USERS>(Db); } }//
  31. public SimpleClient<T> CurrentDb { get { return new SimpleClient<T>(Db); } }//用来处理T表的常用操作
  32.  
  33. /// <summary>
  34. /// 获取所有
  35. /// </summary>
  36. /// <returns></returns>
  37. public virtual List<T> GetList()
  38. {
  39. return CurrentDb.GetList();
  40. }
  41.  
  42. /// <summary>
  43. /// 根据主键删除
  44. /// </summary>
  45. /// <param name="id"></param>
  46. /// <returns></returns>
  47. public virtual bool Delete(dynamic id)
  48. {
  49. return CurrentDb.Delete(id);
  50. }
  51.  
  52. /// <summary>
  53. /// 更新
  54. /// </summary>
  55. /// <param name="id"></param>
  56. /// <returns></returns>
  57. public virtual bool Update(T obj)
  58. {
  59. return CurrentDb.Update(obj);
  60. }
  61.  
  62. }
  63. }

JH.OPEMR.BLL层:

新建了BaseBLL类,该类继承上下文,可自行扩展方法,现在什么方法都没,只是为了提供给其他业务层调用,或者api直接调用,然后其他业务类可以继承该类,其他业务类就统一归基类管制了

User表的业务层:

ok,到这里,db层和业务层基本搭建完成,在api层测试下看看:

将原有的values根据id获取的方法改造下,F5运行,结果如下:

至此,第一个目标完成!!

 

我的第一个netcore2.2 api项目搭建(一)的更多相关文章

  1. 我的第一个netcore2.2 api项目搭建(三)续

    上一章快速陈述了自定义验证功能添加的过程,我的第一个netcore2.2 api项目搭建(三) 但是并没有真正的去实现,这一章将要实现验证功能的添加. 这一章实现目标三:jwt认证授权添加 在netc ...

  2. 我的第一个netcore2.2 api项目搭建(三)

    上一章快速添加了swagger文档管理功能,我的第一个netcore2.2 api项目搭建(二) 这一章实现目标三:api添加身份验证功能 在实现该目标之前,先得理解netcore运行机制. 这是微软 ...

  3. 我的第一个netcore2.2 api项目搭建(二)

    上一章快速使用SqlSugar搭建了netcore api项目,我的第一个netcore2.2 api项目搭建(一) 这一章实现目标二:api使用Swagger,实现api文档管理 效果图:第一张收缩 ...

  4. 通过beego快速创建一个Restful风格API项目及API文档自动化

    通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界 ...

  5. 通过beego快速创建一个Restful风格API项目及API文档自动化(转)

    通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界 ...

  6. .Net Core 3.1浏览器后端服务(一) Web API项目搭建

    一.前言 基于CefSharp开发的浏览器项目已有一段时间,考虑到后期数据维护需要Server端来管理,故开启新篇章搭建浏览器后端服务.该项目前期以梳理服务端知识为主,后期将配合CefSharp浏览器 ...

  7. 用MVC5+EF6+WebApi 做一个小功能(三) 项目搭建

    一般一个项目开始之前都会有启动会,需求交底等等,其中会有一个环节,大讲特讲项目的意义,然后取一个高大上的项目名字,咱这是一个小功能谈不上项目,但是名字不能太小气了.好吧,就叫Trump吧.没有任何含义 ...

  8. 使用模板创建第一个Web API项目

    软件环境 vs 2015 update3 本节将通过例子讲述创建Web API 项目的方法 第一步,打开vs ,依次通过[文件]菜单,[新建][项目]命令,大致步骤如下图 :   第2步,在弹出对话框 ...

  9. Yii2+Swagger搭建RESTful风格的API项目

    在现有的Advanced Template上搭建RESTful API项目的步骤: 本案例前提说明: 本例中不使用\yii\rest\ActiveController自动创建的API,而是自定义一个A ...

随机推荐

  1. MySQL读写分离之Proxy

    MySQL Proxy: ======================================================== MySQL_Proxy Master Slave1 Slav ...

  2. Linux shell awk数组使用

    awk中使用数组 一.数组格式 数组是一个包含一系列元素的表. 格式如下:     abc[1]="xiaohong"     abc[2]="xiaolan" ...

  3. Alipay支付宝支付 报错 invalid [default store dir]: /tmp/

    1.如果使用支付宝sdk,首先lotusphp_runtime 文件也要一起使用  支付宝现在的php sdk中有lotus框架可以和aop文件. 2.保证AopSdk.php文件中的方法可以走到这个 ...

  4. ELK安装过程中一些注意的地方

    安装流程比较简单,只需要下载安装包,解压安装包,修改配置文件,然后启动组件即可,但还是遇到一些小问题,这里做一下记录. 各个组件版本号需要保持一样,例如都使用7.1.1版本 es不能以root账户启用 ...

  5. [TJOI2015]弦论(后缀自动机)

    传送门 题意: 对给定字符串\(s\),求其第\(k\)小子串,重复串被计入以及不被计入这两种情况都需考虑. 思路: 首先构建后缀自动机,之后就考虑在后缀自动机上\(dp\). 我们知道如果要考虑重复 ...

  6. Java的transient关键字

    Java的transient关键字   Java 中的 transient 关键字被用来表示变量将不被序列化处理.那么在理解 transient 关键字之前,我们先了解下什么是序列化. 什么是序列化 ...

  7. 12-cmake语法-内部变量-系统信息

    系统信息 CMAKE_MAJOR_VERSION CMAKE 主版本号,比如 2.4.6 中的 2 CMAKE_MINOR_VERSION CMAKE 次版本号,比如 2.4.6 中的 4 CMAKE ...

  8. Comet OJ - Contest #2题解

    传送门 既然没参加过就没有什么小裙子不小裙子的了-- 顺便全是概率期望真是劲啊-- 因自过去而至的残响起舞 \(k\)增长非常快,大力模拟一下就行了 int main(){ scanf("% ...

  9. 总结:几种生成html格式测试报告的方法

    写自动化测试时,一个很重要的任务就是生成漂亮的测试报告. 1.用junit或testNg时,可以用ant辅助生成html格式: <target name="report" d ...

  10. jvm堆、栈、String常量池

    原文地址:http://blog.csdn.net/tophawk/article/details/78704074 程序计数器:它的生命周期与线程相同,线程私有.较小的内存区域,用以完成分支.循环. ...