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

目标:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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

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

三.api添加身份验证功能

 

开发环境:

Win10、VS2017、oracle11g

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

1.1一步一步来,很简单

我的第一个netcore2.2 api项目搭建(一) 随笔 第1张我的第一个netcore2.2 api项目搭建(一) 随笔 第2张

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

F5运行

我的第一个netcore2.2 api项目搭建(一) 随笔 第4张

初步搭建完成。

 

1.2添加SqlSugar项目

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

我的第一个netcore2.2 api项目搭建(一) 随笔 第5张

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

我的第一个netcore2.2 api项目搭建(一) 随笔 第6张

 

1.3添加其他项目

我的第一个netcore2.2 api项目搭建(一) 随笔 第7张

 总体依赖关系:

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上下文,给业务层调用,使用官方提供的上下文即可

我的第一个netcore2.2 api项目搭建(一) 随笔 第8张

 

全部代码:

我的第一个netcore2.2 api项目搭建(一) 随笔 第9张
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);
        }

    }
}
View Code

 

JH.OPEMR.BLL层:

我的第一个netcore2.2 api项目搭建(一) 随笔 第11张

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

我的第一个netcore2.2 api项目搭建(一) 随笔 第12张

User表的业务层:

我的第一个netcore2.2 api项目搭建(一) 随笔 第13张

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

我的第一个netcore2.2 api项目搭建(一) 随笔 第14张

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

我的第一个netcore2.2 api项目搭建(一) 随笔 第15张

我的第一个netcore2.2 api项目搭建(一) 随笔 第16张

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

 

 

 

 

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄