zoukankan      html  css  js  c++  java
  • 我的第一个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 + "
    " +
                    //    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层:

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

    User表的业务层:

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

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

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

     

  • 相关阅读:
    第025讲:字典:当索引不好用时 | 课后测试题及答案
    第023、024讲:递归:这帮小兔崽子、汉诺塔 | 课后测试题及答案
    第022讲:函数:递归是神马
    第021讲:函数:lambda表达式
    第020讲:函数:内嵌函数和闭包
    第019讲:函数:我的地盘听我的
    第018讲:函数:灵活即强大
    第017讲:函数
    第016讲:序列!序列
    第015讲:字符串:格式化
  • 原文地址:https://www.cnblogs.com/sy-ds/p/10832504.html
Copyright © 2011-2022 走看看