溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

.NET如何集成ORM框架HiSql

發(fā)布時間:2022-07-05 10:23:01 來源:億速云 閱讀:180 作者:iii 欄目:開發(fā)技術

這篇文章主要講解了“.NET如何集成ORM框架HiSql”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“.NET如何集成ORM框架HiSql”吧!

一、引言

做.Net這么多年,出現了很多很多ORM框架,比如Dapper,Sqlsugar,Freesql等等。在之前的項目中,用到的ORM框架也大多數是這幾個老牌的框架。

二、集成HiSql到項目

1、安裝 HiSql 核心包、 HiSql.SqlServer。

.NET如何集成ORM框架HiSql

.NET如何集成ORM框架HiSql

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執(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í)行錯誤后 日志記錄 (異步)
                    logger.Error($"執(zhí)行錯誤:{sqlEx.Message} sql:{sqlEx.Sql} time:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff")}");
                },
                OnTimeOut = (int timer) =>
                {
                    //logger.Trace($"執(zhí)行超時:{timer} time:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff")}");
                }
            };
        }
    }
}

3、在 Startup 中的ConfigureServices方法中,添加 hisql的使用。

//注入Hisql相關
services.AddHiSqlSetup();

.NET如何集成ORM框架HiSql

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。

如圖表示初始化成功,同時在數據庫也可以看到,系統(tǒng)創(chuàng)建了下圖的4個基礎表:

.NET如何集成ORM框架HiSql

  • 1.Hi_TabModel #表結構信息主表

  • 2.Hi_FieldModel #表結構信息明細表

  • 3.Hi_Domain #數據域

  • 4.Hi_DataElement #數據元素

感謝各位的閱讀,以上就是“.NET如何集成ORM框架HiSql”的內容了,經過本文的學習后,相信大家對.NET如何集成ORM框架HiSql這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI