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

Hxj.Data 新增 ToScalar<T> 強型別純量查詢與 Exists、Sum/Max/Min/Avg 泛型擴充

     編輯:關於ASP.NET

純量查詢強型別化:ToScalar<TResult>()

舊版 ToScalar() 回傳 object,需手動轉型。新版支援泛型:

int maxId = DbSession.Default.From()
    .Select(Products._.ProductID)
    .Top(1)
    .ToScalar(); // 直接回傳 int,null/DBNull 自動轉為 default(T) = 0

DbSession 統計方法全面泛型化

// 全部回傳強型別 TResult,null → default(TResult)
decimal avgPrice = DbSession.Default.Avg(Products._.UnitPrice, WhereClip.All);
int totalQty = DbSession.Default.Sum(Products._.UnitsInStock, WhereClip.All);
decimal maxPrice = DbSession.Default.Max(Products._.UnitPrice, WhereClip.All);
decimal minPrice = DbSession.Default.Min(Products._.UnitPrice, WhereClip.All);

新增 Exists<TEntity>(WhereClip) → bool

bool hasDiscontinued = DbSession.Default.Exists(Products._.Discontinued == true);
// 產生:SELECT CASE WHEN EXISTS(...) THEN 1 ELSE 0 END → 映射為 bool

比 Count > 0 更高效(資料庫可短路),語意更清晰。

型別轉換規則

  • 資料庫數值型別 → 目標 CLR 數值型別:自動 Convert.ChangeType。
  • NULL / DBNull.Value → default(TResult)(數值 0、bool false、reference null)。
  • 轉換失敗拋出 InvalidCastException(開發期即可發現)。

實務範例:儀表板統計卡片

var stats = new {
    ProductCount = DbSession.Default.Count(WhereClip.All),
    AvgPrice = DbSession.Default.Avg(Products._.UnitPrice, WhereClip.All),
    MaxPrice = DbSession.Default.Max(Products._.UnitPrice, WhereClip.All),
    HasDiscontinued = DbSession.Default.Exists(Products._.Discontinued == true)
};
// 直接序列化為 JSON 回傳前端,無需手動轉型

強型別純量查詢讓統計類程式碼更簡潔、型別安全、效能更優(避免 boxing/unboxing)。

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