.NET集成ORM框架HiSql
一、引言
做.Net這么多年,出現(xiàn)了很多很多ORM框架,比如Dapper,Sqlsugar,Freesql等等。在之前的項(xiàng)目中,用到的ORM框架也大多數(shù)是這幾個(gè)老牌的框架。
不過最近園子關(guān)于.NET ORM HiSql的討論挺多的,本系列將通過不斷學(xué)習(xí) HiSql官網(wǎng)教程,嘗試將之前使用SqlSuger ORM的一個(gè)項(xiàng)目,使用HiSql框架實(shí)現(xiàn)相關(guān)功能,看看hisql能帶給我們哪些驚喜。
HiSql GitGub地址
HiSql官網(wǎng)教程
項(xiàng)目介紹:項(xiàng)目是一個(gè)通用的后臺(tái)管理系統(tǒng),包含菜單管理、權(quán)限管理、組織架構(gòu)、用戶管理等等。
數(shù)據(jù)庫采用SqlServer 2016;前端使用Element-UI;后端采用.Net5 Web Api。
二、集成HiSql到項(xiàng)目
1、安裝 HiSql 核心包、 HiSql.SqlServer。
2、在項(xiàng)目中新建類文件 HiSqlSetupExtension.cs, 用于注入數(shù)據(jù)庫配置,hisql數(shù)據(jù)庫訪問對(duì)象。
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執(zhí)行前 日志記錄 (異步) #if DEBUG logger.Trace($"執(zhí)行前sql:{sql} time:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff")}"); #endif }, OnLogSqlExecuted = (sql, param) => { #if DEBUG //sql執(zhí)行后 日志記錄 (異步) logger.Trace($"執(zhí)行后sql:{sql} time:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff")}"); #endif }, OnSqlError = (sqlEx) => { //sql執(zhí)行錯(cuò)誤后 日志記錄 (異步) logger.Error($"執(zhí)行錯(cuò)誤:{sqlEx.Message} sql:{sqlEx.Sql} time:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff")}"); }, OnTimeOut = (int timer) => { //logger.Trace($"執(zhí)行超時(shí):{timer} time:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff")}"); } }; } } }
3、在 Startup 中的ConfigureServices方法中,添加 hisql的使用。
//注入Hisql相關(guān) 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、啟動(dòng)項(xiàng)目后,訪問 項(xiàng)目地址 http://localhost:8868/api/hisql/Install 初始化hisql。
如圖表示初始化成功,同時(shí)在數(shù)據(jù)庫也可以看到,系統(tǒng)創(chuàng)建了下圖的4個(gè)基礎(chǔ)表:
- 1.Hi_TabModel #表結(jié)構(gòu)信息主表
- 2.Hi_FieldModel #表結(jié)構(gòu)信息明細(xì)表
- 3.Hi_Domain #數(shù)據(jù)域
- 4.Hi_DataElement #數(shù)據(jù)元素
到此,項(xiàng)目就完成了HiSql的引入了,后面就可以愉快的使用HiSql各個(gè)功能。
到此這篇關(guān)于.NET集成ORM框架HiSql的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
.Net Core解決WebAPI中返回時(shí)間格式帶T的問題
本文主要介紹了.Net Core解決WebAPI中返回時(shí)間格式帶T的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04asp.net不用設(shè)置iis實(shí)現(xiàn)url重寫 類似偽靜態(tài)路由
說到不用設(shè)置iis,主要是為了實(shí)現(xiàn)在虛擬主機(jī)或是拿不到iis操作限的時(shí)候,不能添加isap又想實(shí)現(xiàn)類似于靜態(tài)化的程序?qū)崿F(xiàn)方式,先聲明,這里最終要實(shí)現(xiàn)的效果是,最終可以用12345.html替換show.aspx?id=12345這樣的地址訪問功能,支持任意擴(kuò)展名及無擴(kuò)展2014-01-01ASP.NET Core MVC 中實(shí)現(xiàn)中英文切換的示例代碼
這篇文章主要介紹了ASP.NET Core MVC 中實(shí)現(xiàn)中英文切換的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02一步步打造簡(jiǎn)單的MVC電商網(wǎng)站BooksStore(4)
這篇文章主要和大家一起一步步打造一個(gè)簡(jiǎn)單的MVC電商網(wǎng)站,MVC電商網(wǎng)站BooksStore第四篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04ASP.net在頁面所有內(nèi)容生成后、輸出內(nèi)容前對(duì)頁面內(nèi)容進(jìn)行操作
ASP.net在頁面所有內(nèi)容生成后、輸出內(nèi)容前對(duì)頁面內(nèi)容進(jìn)行操作...2007-04-04System.Web中不存在類型或命名空間名稱“Optimization”(是否缺少程序集引用?)
這篇文章主要為大家詳細(xì)介紹了命名空間“System.Web”中不存在類型或命名空間名稱“Optimization”的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04