網站首頁 編程語言 正文
一、引言
做.Net這么多年,出現了很多很多ORM框架,比如Dapper,Sqlsugar,Freesql等等。在之前的項目中,用到的ORM框架也大多數是這幾個老牌的框架。
不過最近園子關于.NET ORM HiSql的討論挺多的,本系列將通過不斷學習 HiSql官網教程,嘗試將之前使用SqlSuger ORM的一個項目,使用HiSql框架實現相關功能,看看hisql能帶給我們哪些驚喜。
HiSql GitGub地址
HiSql官網教程
項目介紹:項目是一個通用的后臺管理系統,包含菜單管理、權限管理、組織架構、用戶管理等等。
數據庫采用SqlServer 2016;前端使用Element-UI;后端采用.Net5 Web Api。
二、集成HiSql到項目
1、安裝 HiSql 核心包、 HiSql.SqlServer。
2、在項目中新建類文件 HiSqlSetupExtension.cs, 用于注入數據庫配置,hisql數據庫訪問對象。
using HiSql;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System;
namespace H.CRM.Action.API.Helper
{
public static class HiSqlSetupExtension
{
public static IServiceCollection AddHiSqlSetup(this IServiceCollection services)
{
//注入HiSqlConfig
services.AddTransient<HiSqlConfig>();
//注入HiSqlClient
services.AddTransient<HiSqlClient>((d) =>
{
var config = d.GetService<HiSqlConfig>();
var hisql = new HiSqlClient(config);
return hisql;
});
return services;
}
}
class HiSqlConfig : ConnectionConfig
{
static readonly NLog.Logger logger = NLog.LogManager.GetLogger("HiSqlSetup");
public HiSqlConfig(IConfiguration configuration)
{
DbType = DBType.SqlServer;
DbServer = "HISQL";
ConnectionString = configuration.GetSection("ConnectionStrings:Admin").Value;
Schema = "dbo";
SqlExecTimeOut = 1000 * 5;
AppEvents = new AopEvent()
{
OnDbDecryptEvent = (connstr) =>
{
//解密連接字段
return connstr;
},
OnLogSqlExecuting = (sql, param) =>
{
//sql執行前 日志記錄 (異步)
#if DEBUG
logger.Trace($"執行前sql:{sql} time:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff")}");
#endif
},
OnLogSqlExecuted = (sql, param) =>
{
#if DEBUG
//sql執行后 日志記錄 (異步)
logger.Trace($"執行后sql:{sql} time:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff")}");
#endif
},
OnSqlError = (sqlEx) =>
{
//sql執行錯誤后 日志記錄 (異步)
logger.Error($"執行錯誤:{sqlEx.Message} sql:{sqlEx.Sql} time:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff")}");
},
OnTimeOut = (int timer) =>
{
//logger.Trace($"執行超時:{timer} time:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff")}");
}
};
}
}
}
3、在 Startup 中的ConfigureServices方法中,添加 hisql的使用。
//注入Hisql相關
services.AddHiSqlSetup();
4、新建 控制器 HiSqlController,添加初始化方法。
using Microsoft.AspNetCore.Mvc;
using HiSql;
using System.Linq;
namespace HSMB.Admin.WebApi.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class HiSqlController : ControllerBase
{
private readonly HiSqlClient sqlClient;
public HiSqlController(
HiSqlClient hiSqlClient
)
{
this.sqlClient = hiSqlClient;
}
[HttpGet, HttpPost]
public IActionResult Install()
{
sqlClient.CodeFirst.InstallHisql();
var tables = sqlClient.DbFirst.GetTables().ToList().Where(t=>t.TabName.StartsWith("H"));
return new JsonResult(tables);
}
}
}
5、啟動項目后,訪問 項目地址 http://localhost:8868/api/hisql/Install 初始化hisql。
如圖表示初始化成功,同時在數據庫也可以看到,系統創建了下圖的4個基礎表:
- 1.Hi_TabModel #表結構信息主表
- 2.Hi_FieldModel #表結構信息明細表
- 3.Hi_Domain #數據域
- 4.Hi_DataElement #數據元素
到此,項目就完成了HiSql的引入了,后面就可以愉快的使用HiSql各個功能。
原文鏈接:https://www.cnblogs.com/pengxianyuan/p/16427131.html
相關推薦
- 2022-12-07 C++游戲教程基本技巧之隨機化詳解_C 語言
- 2022-05-29 Linux系統通過Docker安裝SQL?Server數據庫_docker
- 2023-02-01 特定用例下的Combine全面使用詳解_Swift
- 2021-10-25 C語言編寫漢諾塔游戲_C 語言
- 2022-10-17 詳解Go語言中單鏈表的使用_Golang
- 2022-08-16 C#?winform?請求http的實現(get,post)_C#教程
- 2022-05-06 C#利用反射實現多數據庫訪問_C#教程
- 2022-06-13 Python判斷dict中key是否存在的3種方法實例_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支