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; } } }