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

NBear 強型別 Where/OrderBy 查詢:運算子重載實現型安全的實體查詢語法

     編輯:關於ASP.NET

NBear v2.2.1+ 支援強型別實體查詢語法,以運算子重載實現編譯期檢查、直觀易讀、跨資料庫平台的查詢表達。

語法範例

LocalUser[] users = gateway.Select<LocalUser>(
  _Entity.LocalUser.Id > 5 | _Entity.LocalUser.LoginId == "teddy",
  _Entity.LocalUser.Id.Desc & _Entity.LocalUser.LoginId.Asc
);

等同傳統字串 SQL:

gateway.Select<LocalUser>("[Id] > @Id or [LoginId] = @LoginId", "[Id] desc, [LoginId]", new object[] { 5, "teddy" });

優勢

  • 強型別: 編譯器捕獲拼字錯誤、型別不符。
  • 直觀: 程式碼即文檔,無需切換上下文。
  • 隔離資料庫 SQL 差異: 業務層不依賴特定 SQL 方言。

生成查詢代碼

使用 Entity Configurator 載入組件 → 設置元數據 → 「Code → Generate EntityQuery Code」→ 複製生成代碼至專案。產出 _Entity 命名空間含所有實體的 PropertyItem 靜態屬性。

支援運算子

  • 邏輯:& (And)、| (Or)、! (Not)
  • 比較:==、!=、>、<、>=、<=
  • 模糊:.Like("pattern")
  • 排序組合:& (ThenBy)

生成代碼片段

namespace _Entity {
  public class LocalUser {
    public static PropertyItem Password = new PropertyItem("Password", "[", "]", "@");
    public static PropertyItem LoginId = new PropertyItem("LoginId", "[", "]", "@");
    public static PropertyItem Id = new PropertyItem("Id", "[", "]", "@");
    public static PropertyItem Name = new PropertyItem("Name", "[", "]", "@");
    public static PropertyItem PrivilegeOwnerId = new PropertyItem("PrivilegeOwnerId", "[", "]", "@");
  }
  // ... 其他實體同理
}

此機制大幅提升查詢代碼的可維護性與重構安全性。

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