首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

Hxj.Data 推薦 DbSession 寫法:靜態類別封裝多連線與 SQL 記錄

     編輯:關於ASP.NET

避免直接用 DbSession.Default,建立專屬靜態入口

DbSession.Default 會自動抓取 connectionStrings 最後一個節點,實務上專案常有多資料庫,建議以靜態類別集中管理:

標準寫法範本

public static class Db
{
    // 每個資料庫一個靜態唯讀 DbSession
    public static readonly DbSession Northwind = new DbSession("NorthwindConnectionString");
    public static readonly DbSession ErpDb = new DbSession("ErpConnectionString");

    // 靜態建構函式:註冊 SQL 記錄事件(僅執行一次)
    static Db()
    {
        Northwind.RegisterSqlLogger(sql => 
            File.AppendAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "sqllog.txt"), sql));
        
        ErpDb.RegisterSqlLogger(sql => 
            Hxj.Common.Log4net.Debug(sql)); // 生產環境建議用 log4net
    }
}

使用方式

// 程式碼中統一透過 Db.Northwind / Db.ErpDb 存取
var products = Db.Northwind.From().ToList();
var orders = Db.ErpDb.From().Where(...).ToList();

關鍵優勢

  1. 意圖明確:Db.Northwind 一眼看出操作哪個資料庫,避免 Default 切換連線字串順序導致的 Bug。
  2. 集中管理:所有資料庫入口集中在 Db 類別,易於代碼審查與維護。
  3. SQL 記錄統一:靜態建構函式確保記錄器只註冊一次,支援檔案、log4net、NLog 等多種後端。
  4. 效能:readonly 確保實例只建立一次,無鎖、無鎖競爭。

記錄器寫法演進

// 簡單檔案記錄(開發測試用,注意檔案無限增長)
Northwind.RegisterSqlLogger(sql => File.AppendAllText("sqllog.txt", sql + Environment.NewLine));

// 生產級:log4net 非同步寫入、滾動檔案、等級過濾
Northwind.RegisterSqlLogger(sql => Hxj.Common.Log4net.Debug(sql));

// 條件記錄:只記錄超過 100ms 的慢查詢
Northwind.RegisterSqlLogger((sql, elapsedMs) => {
    if (elapsedMs > 100) Log4net.Warn($"Slow SQL ({elapsedMs}ms): {sql}");
});

採用此模式,專案資料庫存取層結構清晰、可追蹤、易擴展,是 Hxj.Data 實務專案的標準作法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved