我的第一个netcore2.2 api项目搭建(一)
早早就想入门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上下文,给业务层调用,使用官方提供的上下文即可
全部代码:
- using SqlSugar;
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace JH.OPEMR.DBUtility
- {
- public class DbContext<T> where T : class, new()
- {
- public DbContext()
- {
- Db = new SqlSugarClient(new ConnectionConfig()
- {
- ConnectionString = "Data Source=192.168.11.43/xxx;User ID=xx;Password=xx;",
- DbType = DbType.Oracle,
- InitKeyType = InitKeyType.Attribute,//从特性读取主键和自增列信息
- IsAutoCloseConnection = true,//开启自动释放模式和EF原理一样我就不多解释了
- });
- //调式代码 用来打印SQL
- Db.Aop.OnLogExecuting = (sql, pars) =>
- {
- //Console.WriteLine(sql + "\r\n" +
- // Db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
- Console.WriteLine();
- };
- }
- //注意:不能写成静态的
- public SqlSugarClient Db;//用来处理事务多表查询和复杂的操作
- public SimpleClient<Model.USERS> StudentDb { get { return new SimpleClient<Model.USERS>(Db); } }//
- public SimpleClient<T> CurrentDb { get { return new SimpleClient<T>(Db); } }//用来处理T表的常用操作
- /// <summary>
- /// 获取所有
- /// </summary>
- /// <returns></returns>
- public virtual List<T> GetList()
- {
- return CurrentDb.GetList();
- }
- /// <summary>
- /// 根据主键删除
- /// </summary>
- /// <param name="id"></param>
- /// <returns></returns>
- public virtual bool Delete(dynamic id)
- {
- return CurrentDb.Delete(id);
- }
- /// <summary>
- /// 更新
- /// </summary>
- /// <param name="id"></param>
- /// <returns></returns>
- public virtual bool Update(T obj)
- {
- return CurrentDb.Update(obj);
- }
- }
- }
JH.OPEMR.BLL层:
新建了BaseBLL类,该类继承上下文,可自行扩展方法,现在什么方法都没,只是为了提供给其他业务层调用,或者api直接调用,然后其他业务类可以继承该类,其他业务类就统一归基类管制了
User表的业务层:
ok,到这里,db层和业务层基本搭建完成,在api层测试下看看:
将原有的values根据id获取的方法改造下,F5运行,结果如下:
至此,第一个目标完成!!
我的第一个netcore2.2 api项目搭建(一)的更多相关文章
- 我的第一个netcore2.2 api项目搭建(三)续
上一章快速陈述了自定义验证功能添加的过程,我的第一个netcore2.2 api项目搭建(三) 但是并没有真正的去实现,这一章将要实现验证功能的添加. 这一章实现目标三:jwt认证授权添加 在netc ...
- 我的第一个netcore2.2 api项目搭建(三)
上一章快速添加了swagger文档管理功能,我的第一个netcore2.2 api项目搭建(二) 这一章实现目标三:api添加身份验证功能 在实现该目标之前,先得理解netcore运行机制. 这是微软 ...
- 我的第一个netcore2.2 api项目搭建(二)
上一章快速使用SqlSugar搭建了netcore api项目,我的第一个netcore2.2 api项目搭建(一) 这一章实现目标二:api使用Swagger,实现api文档管理 效果图:第一张收缩 ...
- 通过beego快速创建一个Restful风格API项目及API文档自动化
通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界 ...
- 通过beego快速创建一个Restful风格API项目及API文档自动化(转)
通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界 ...
- .Net Core 3.1浏览器后端服务(一) Web API项目搭建
一.前言 基于CefSharp开发的浏览器项目已有一段时间,考虑到后期数据维护需要Server端来管理,故开启新篇章搭建浏览器后端服务.该项目前期以梳理服务端知识为主,后期将配合CefSharp浏览器 ...
- 用MVC5+EF6+WebApi 做一个小功能(三) 项目搭建
一般一个项目开始之前都会有启动会,需求交底等等,其中会有一个环节,大讲特讲项目的意义,然后取一个高大上的项目名字,咱这是一个小功能谈不上项目,但是名字不能太小气了.好吧,就叫Trump吧.没有任何含义 ...
- 使用模板创建第一个Web API项目
软件环境 vs 2015 update3 本节将通过例子讲述创建Web API 项目的方法 第一步,打开vs ,依次通过[文件]菜单,[新建][项目]命令,大致步骤如下图 : 第2步,在弹出对话框 ...
- Yii2+Swagger搭建RESTful风格的API项目
在现有的Advanced Template上搭建RESTful API项目的步骤: 本案例前提说明: 本例中不使用\yii\rest\ActiveController自动创建的API,而是自定义一个A ...
随机推荐
- MySQL读写分离之Proxy
MySQL Proxy: ======================================================== MySQL_Proxy Master Slave1 Slav ...
- Linux shell awk数组使用
awk中使用数组 一.数组格式 数组是一个包含一系列元素的表. 格式如下: abc[1]="xiaohong" abc[2]="xiaolan" ...
- Alipay支付宝支付 报错 invalid [default store dir]: /tmp/
1.如果使用支付宝sdk,首先lotusphp_runtime 文件也要一起使用 支付宝现在的php sdk中有lotus框架可以和aop文件. 2.保证AopSdk.php文件中的方法可以走到这个 ...
- ELK安装过程中一些注意的地方
安装流程比较简单,只需要下载安装包,解压安装包,修改配置文件,然后启动组件即可,但还是遇到一些小问题,这里做一下记录. 各个组件版本号需要保持一样,例如都使用7.1.1版本 es不能以root账户启用 ...
- [TJOI2015]弦论(后缀自动机)
传送门 题意: 对给定字符串\(s\),求其第\(k\)小子串,重复串被计入以及不被计入这两种情况都需考虑. 思路: 首先构建后缀自动机,之后就考虑在后缀自动机上\(dp\). 我们知道如果要考虑重复 ...
- Java的transient关键字
Java的transient关键字 Java 中的 transient 关键字被用来表示变量将不被序列化处理.那么在理解 transient 关键字之前,我们先了解下什么是序列化. 什么是序列化 ...
- 12-cmake语法-内部变量-系统信息
系统信息 CMAKE_MAJOR_VERSION CMAKE 主版本号,比如 2.4.6 中的 2 CMAKE_MINOR_VERSION CMAKE 次版本号,比如 2.4.6 中的 4 CMAKE ...
- Comet OJ - Contest #2题解
传送门 既然没参加过就没有什么小裙子不小裙子的了-- 顺便全是概率期望真是劲啊-- 因自过去而至的残响起舞 \(k\)增长非常快,大力模拟一下就行了 int main(){ scanf("% ...
- 总结:几种生成html格式测试报告的方法
写自动化测试时,一个很重要的任务就是生成漂亮的测试报告. 1.用junit或testNg时,可以用ant辅助生成html格式: <target name="report" d ...
- jvm堆、栈、String常量池
原文地址:http://blog.csdn.net/tophawk/article/details/78704074 程序计数器:它的生命周期与线程相同,线程私有.较小的内存区域,用以完成分支.循环. ...