.NET ORM框架HiSql实战-第一章-集成HiSql

金歌  金牌会员 | 2022-8-21 00:37:53 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 716|帖子 716|积分 2148

一、引言
做.Net这么多年,出现了很多很多ORM框架,比如Dapper,Sqlsugar,Freesql等等。在之前的项目中,用到的ORM框架也大多数是这几个老牌的框架。
不过最近园子关于.NET ORM HiSql的讨论挺多的,本系列将通过不断学习 HiSql官网教程,尝试将之前使用SqlSuger ORM的一个项目,使用HiSql框架实现相关功能,看看hisql能带给我们哪些惊喜。
c# 国内外ORM 框架 dapper efcore sqlsugar freesql hisql sqlserver数据常规插入测试性能对比对比
HiSql GitGub地址
HiSql官网教程
项目介绍:项目是一个通用的后台管理系统,包含菜单管理、权限管理、组织架构、用户管理等等。
数据库采用SqlServer 2016;前端使用Element-UI;后端采用.Net5 Web Api。
二、集成HiSql到项目

  • 安装 HiSql 核心包、 HiSql.SqlServer。


2、在项目中新建类文件 HiSqlSetupExtension.cs, 用于注入数据库配置,hisql数据库访问对象。
  1. using HiSql;
  2. using Microsoft.Extensions.Configuration;
  3. using Microsoft.Extensions.DependencyInjection;
  4. using System;
  5. namespace H.CRM.Action.API.Helper
  6. {
  7.     public static class HiSqlSetupExtension
  8.     {
  9.         public static IServiceCollection AddHiSqlSetup(this IServiceCollection services)
  10.         {
  11.             //注入HiSqlConfig
  12.             services.AddTransient<HiSqlConfig>();
  13.             //注入HiSqlClient
  14.             services.AddTransient<HiSqlClient>((d) =>
  15.             {
  16.                 var config = d.GetService<HiSqlConfig>();
  17.                 var hisql = new HiSqlClient(config);
  18.                 return hisql;
  19.             });
  20.             return services;
  21.         }
  22.     }
  23.     class HiSqlConfig : ConnectionConfig
  24.     {
  25.         static readonly NLog.Logger logger = NLog.LogManager.GetLogger("HiSqlSetup");
  26.         public HiSqlConfig(IConfiguration configuration)
  27.         {
  28.             DbType = DBType.SqlServer;
  29.             DbServer = "HISQL";
  30.             ConnectionString = configuration.GetSection("ConnectionStrings:Admin").Value;
  31.             Schema = "dbo";
  32.             SqlExecTimeOut = 1000 * 5;
  33.             AppEvents = new AopEvent()
  34.             {
  35.                 OnDbDecryptEvent = (connstr) =>
  36.                 {
  37.                     //解密连接字段
  38.                     return connstr;
  39.                 },
  40.                 OnLogSqlExecuting = (sql, param) =>
  41.                 {
  42.                     //sql执行前 日志记录 (异步)
  43. #if DEBUG
  44.                     logger.Trace($"执行前sql:{sql} time:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff")}");
  45. #endif
  46.                 },
  47.                 OnLogSqlExecuted = (sql, param) =>
  48.                 {
  49. #if DEBUG
  50.                     //sql执行后 日志记录 (异步)
  51.                     logger.Trace($"执行后sql:{sql} time:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff")}");
  52. #endif
  53.                 },
  54.                 OnSqlError = (sqlEx) =>
  55.                 {
  56.                     //sql执行错误后 日志记录 (异步)
  57.                     logger.Error($"执行错误:{sqlEx.Message} sql:{sqlEx.Sql} time:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff")}");
  58.                 },
  59.                 OnTimeOut = (int timer) =>
  60.                 {
  61.                     //logger.Trace($"执行超时:{timer} time:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff")}");
  62.                 }
  63.             };
  64.         }
  65.     }
  66. }
复制代码
3、在 Startup 中的ConfigureServices方法中,添加 hisql的使用。
  1. //注入Hisql相关
  2.             services.AddHiSqlSetup();
复制代码

4、新建 控制器 HiSqlController,添加初始化方法。
  1.   using Microsoft.AspNetCore.Mvc;
  2. using HiSql;
  3. using System.Linq;
  4. namespace HSMB.Admin.WebApi.Controllers
  5. {
  6.     [Route("api/[controller]/[action]")]
  7.     [ApiController]
  8.     public class HiSqlController : ControllerBase
  9.     {
  10.         private readonly HiSqlClient sqlClient;
  11.       
  12.         public HiSqlController(         
  13.              HiSqlClient hiSqlClient
  14.             )
  15.         {
  16.             this.sqlClient = hiSqlClient;
  17.         }
  18.         [HttpGet, HttpPost]
  19.         public IActionResult Install()
  20.         {
  21.             sqlClient.CodeFirst.InstallHisql();
  22.             var tables = sqlClient.DbFirst.GetTables().ToList().Where(t=>t.TabName.StartsWith("H"));
  23.             return new JsonResult(tables);
  24.         }
  25.     }
  26. }
复制代码
5、启动项目后,访问 项目地址 http://localhost:8868/api/hisql/Install 初始化hisql。
如图表示初始化成功,同时在数据库也可以看到,系统创建了下图的4个基础表:

1.Hi_TabModel  #表结构信息主表
2.Hi_FieldModel #表结构信息明细表
3.Hi_Domain #数据域
4.Hi_DataElement  #数据元素
到此,项目就完成了HiSql的引入了,后面就可以愉快的使用HiSql各个功能。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表