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

Hxj.Data 新功能:交易中查詢、Select 子查詢、WhereClip 隱式轉換

     編輯:關於ASP.NET

三大實用增強一次看懂

1. 交易中查詢

場景:在同一交易內更新資料後,立即查詢驗證,但不想降低隔離等級讓其他連線看到未認可資料。
DbTrans 新增 From<T>() 方法,用法與一般查詢完全相同:

using (DbTrans trans = DbSession.Default.BeginTransaction()) {
    trans.Update(Products._.ProductName, "new name", Products._.ProductID == 1);
    // 交易內查詢:看得到剛剛的更新
    Products p = trans.From().Where(Products._.ProductID == 1).ToFirst();
    trans.Commit();
}

2. Select 子查詢

場景:主查詢欄位需包含相關表的聚合值(如:客戶清單含訂單筆數)。
FromSection 新增 AddSelect(FromSection subQuery, string alias):

var dt = DbSession.Default.From()
    .Select(Customers._.CustomerID, Customers._.ContactName)
    .AddSelect(
        DbSession.Default.From()
            .Select(Field.All.Count())
            .Where(Customers._.CustomerID == Orders._.CustomerID),
        "OrderCount") // 別名
    .Page(10, 6)
    .ToDataTable();

產生 SQL:

SELECT TOP 10 * FROM (
    SELECT TOP 41 [Customers].[CustomerID], [Customers].[ContactName],
        (SELECT COUNT(*) AS [cnt] FROM [Orders] 
         WHERE [Customers].[CustomerID] = [Orders].[CustomerID]) AS [OrderCount]
    FROM [Customers] ORDER BY [Customers].[CustomerID] DESC
) AS tempIntable ORDER BY [CustomerID] ASC

3. WhereClip 隱式轉換

現在可直接將 WhereClip 傳遞給原本接受 string 或 object 的方法,編譯器自動套用隱式轉換運算子,減少 .ToWhereClip() 呼叫。例如:

// 舊版
.Where(builder.ToWhereClip())

// 新版(隱式轉換)
.Where(builder) // 自動呼叫 WhereClipBuilder.op_Implicit → WhereClip

總結

  • 交易中查詢:同一連線、同一交易內讀取自己寫入的資料,零配置。
  • Select 子查詢:支援標量子查詢作為欄位,自動處理分頁包裹 SQL。
  • 隱式轉換:API 更流暢,建構器直接當條件用。

這些增強皆保持向下相容,升級即可使用。

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