vs2017+.net core 2.0+sqlsugar 的整体解决方案

背景:

原有C#框架,无法满足跨平台和linux系统,国产化系统下运行的要求

目前可采用的技术框架:java、python等。由于个人.net出身,所以记录本篇研究C# 跨平台整体解决方案

目标:

利用C# 和.net 平台,实现可跨平台的WebAPI框架实现

过程:

1.准备工作:vs2017(开发环境)、sqlserver数据库(其他数据库也可)、.net core 2.0(可自行下载,目前.net core 2.0与vs2017匹配,更高的版本需要新版本的visual studio)

2..net core 安装完成后,使用vs2017新建项目时,可以选择空,或者API(研究时,选择的API)

3.按照IDE提示,自动生成项目框架。

4.分析项目结构,appsettings.json (配置文件,可以理解为原来.net 的webconfig文件;主要配置一些数据库信息,和其他用户配置信息)、startup.cs(项目启动类,与Main函数一样;startup类中,可以进行一些配置,可参考springboot的启动配置;另外,startup类中可以配置Webapi的路由,中间键等)

5.controller文件是控制器管理文件,也是接口类的存放位置。注意:.net core 在进行控制器方法调用时,默认的调用Get方法。如果控制器有多个方法,建议使用HttpGet("方法名")这种方式编写,调用时,api/controller/action即可。否则,程序运行后,会报错,接口也无法访问到。

6.sqlsugar通过程序包管理,添加到项目中相关的sqlsugarcore插件即可。注意版本问题,.net core 2.0,可采用sqlsuarcore 5.0

7.编写sqlsugarclient,获取数据库连接字符串,生成客户端,以供调用

8.appsettings.json的读取,在startup中可以通过configuration类获取。在其他的类中,如:数据库操作类获取时,可以自定义中间键,通过在startup类中注册,获取数据库连接字符串。中间键方式,可以随时调取使用。

相关代码记录:

using CoreDemo.config;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace CoreDemo.Models
{
    /// <summary>
    /// sqlsugar ORM框架
    /// 2023-06-01
    /// sguozeng
    /// </summary>
    public class Sqlsugarhelper
    {
        public static string Conn = ConfigHelper.GetConnectionConfig("database");
        public SqlSugarClient sqlsugarDB()
        {
            SqlSugarClient db = new SqlSugarClient(new ConnectionConfig
            {
                ConnectionString = Conn,
                DbType = SqlSugar.DbType.SqlServer,//数据库类型
                IsShardSameThread = true,
                IsAutoCloseConnection = true,
                InitKeyType = InitKeyType.Attribute
            });
            return db;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using CoreDemo.config;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;

namespace CoreDemo
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            //加入配置的中间键
            app.UseMiddleware<ConfigMiddleware>();

            app.UseMvc();
        }
    }
}
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Threading.Tasks;
using CoreDemo.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;

namespace CoreDemo.Controllers
{
    [Produces("application/json")]
    [Route("api/Users")]
    public class UsersController : Controller
    {
        [HttpGet("getsingle")]
        public object getsingle()
        {
            T_Tong_Users user = new T_Tong_Users();
            using (SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.Conn, System.Data.CommandType.Text, "select top 1 * from T_Tong_Users", null))
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        user.FId = reader.IsDBNull(reader.GetOrdinal("FId")) ? 0 : reader.GetInt32(reader.GetOrdinal("FId"));
                        user.FName = reader.IsDBNull(reader.GetOrdinal("FName")) ? "" : reader.GetString(reader.GetOrdinal("FName"));
                    }
                }
                return user;
            }
        }

        [HttpGet("getlist")]
        public object getlist()
        {
            SqlSugarClient client = new Sqlsugarhelper().sqlsugarDB();
            List<T_Tong_Users> userlist = client.Queryable<T_Tong_Users>().ToList();
            return userlist;
        }
    }
}

 

posted @ 2023-06-01 16:23  成神之路~  阅读(296)  评论(0编辑  收藏  举报