欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.NET集成ORM框架HiSql

 更新時(shí)間:2022年07月05日 08:24:52   作者:pengxianyuan  
這篇文章介紹了.NET集成ORM框架HiSql的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、引言

做.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)文章

最新評(píng)論