| 方法 | SQL |
|---|---|
| InnerJoin | INNER JOIN |
| LeftJoin | LEFT OUTER JOIN |
| RightJoin | RIGHT OUTER JOIN |
| CrossJoin | CROSS JOIN |
| FullJoin | FULL OUTER JOIN |
| Union | UNION |
| UnionAll | UNION ALL |
DbSession.Default.From()
.InnerJoin(Customers._.CustomerID == Orders._.CustomerID)
.ToDataTable();
SQL:SELECT * FROM [Customers] INNER JOIN [Orders] ON ([Customers].[CustomerID] = [Orders].[CustomerID])
DbSession.Default.From()
.LeftJoin(Customers._.CustomerID == Orders._.CustomerID)
.Where(Customers._.Country == "USA")
.ToDataTable();
SQL:SELECT * FROM [Customers] LEFT OUTER JOIN [Orders] ON (...) WHERE [Customers].[Country] = @p0
DbSession.Default.From()
.InnerJoin(Customers._.CustomerID == Orders._.CustomerID)
.InnerJoin(Order_Details._.OrderID == Orders._.OrderID)
.Where(Customers._.Country == "USA")
.ToDataTable();
鏈式呼叫,順序即 Join 順序,ON 條件以強型別 Field 運算式表達,編譯期檢查。
var q1 = DbSession.Default.From().Select(Products._.ProductID);
var q2 = DbSession.Default.From().Select(ArchivedProducts._.ProductID);
var allIds = q1.UnionAll(q2).ToList();
要求兩查詢欄位數量、型別、順序一致,自動產生 UNION ALL SQL。
InnerJoin,效能最佳。LeftJoin 僅在「主表資料必須保留」時使用。CrossJoin/FullJoin 除非極特殊需求(笛卡兒積/雙向保留)。Select 投影,減少網路傳輸與記憶體。Hxj.Data 以流暢介面封裝標準 SQL Join,型別安全、可讀性高、零字串拼接,是 ORM 層處理關聯查詢的最佳實踐。