c# sqlsugar 主子表明細 查詢

在使用 SqlSugar ORM 進行數據庫操作時,特別是在處理主子表關系時,通常需要執行關聯查詢來獲取主表和其子表的數據。SqlSugar 提供了強大的查詢能力,支持多種方式的關聯查詢,包括左連接(Left Join)、內連接(Inner Join)等。下面將介紹如何使用 SqlSugar 進行主子表的查詢,并附帶子表的明細。

1. 定義實體

首先,確保你的實體類正確反映了數據庫表的結構。例如,假設我們有兩個表:Order(訂單表)和?OrderDetail(訂單詳情表),其中?OrderDetail?表通過?OrderId?與?Order?表關聯。

[SugarTable("Order")]
public class Order
{[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]public int OrderId { get; set; }public string OrderName { get; set; }// 其他字段...[SugarColumn(IsIgnore = true)]public List<OrderDetail> OrderDetails { get; set; } // 這個屬性用于存放子表數據
}[SugarTable("OrderDetail")]
public class OrderDetail
{[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]public int DetailId { get; set; }public int OrderId { get; set; }public string ProductName { get; set; }// 其他字段...
}

2. 配置數據庫連接

配置 SqlSugar 數據庫連接。

SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() 
{ConnectionString = "your connection string", // 數據庫連接字符串DbType = DbType.SqlServer, // 或其他數據庫類型,如 MySql, Sqlite 等IsAutoCloseConnection = true,InitKeyType = InitKeyType.Attribute
});

3. 執行關聯查詢

使用 SqlSugar 的?Queryable?方法進行關聯查詢。這里使用左連接(Left Join)來獲取每個訂單及其對應的訂單詳情。

var orders = db.Queryable<Order, OrderDetail>((o, od) => o.OrderId == od.OrderId) // 指定關聯條件.LeftJoin<OrderDetail>((o, od) => od.OrderId == o.OrderId) // 左連接子表到主表,確保即使沒有子記錄也能獲取主記錄.Select((o, od) => new Order { OrderId = o.OrderId, OrderName = o.OrderName, OrderDetails = od }) // 選擇字段,并將子表數據放入主表的子表屬性中.ToList(); // 執行查詢并獲取結果列表

4. 處理查詢結果

查詢結果中的?orders?列表將包含每個訂單及其對應的訂單詳情列表。例如:

foreach (var order in orders)
{Console.WriteLine($"Order ID: {order.OrderId}, Order Name: {order.OrderName}");foreach (var detail in order.OrderDetails){Console.WriteLine($"  Detail ID: {detail.DetailId}, Product Name: {detail.ProductName}");}
}

這樣,你就可以在 C# 中使用 SqlSugar ORM 方便地處理主子表查詢,并獲取包含子表明細的主表數據了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91867.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91867.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91867.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

研華PCI-1285/1285E 系列------(一概述)

PCI-1285/1285E 系列是基于 DSP 的 SoftMotion PCI 總線控制器卡,專為各種電機自動 化和其它機器自動化的廣泛應用設計。板卡配有高性能 DSP,其中包括 SoftMotion算法,能夠實現運動軌跡和時間控制,以滿足精確運動中的同步應用需求。 研華 SoftMotion 支持以下特性:龍門…

二代身份證識別技術的發展:從機器學習到深度學習

一、技術發展歷程1. 傳統機器學習時代&#xff08;2000-2012&#xff09;特征工程方法&#xff1a;主要依賴手工設計的特征&#xff08;HOG、SIFT、LBP等&#xff09;分類器技術&#xff1a;支持向量機(SVM)、隨機森林、AdaBoost等OCR技術&#xff1a;基于模板匹配和連通區域分…

云服務器如何設置防火墻和安全組規則?

一、安全組&#xff08;Security Group&#xff09;設置安全組是云平臺提供的虛擬防火墻&#xff0c;用于控制 入站&#xff08;Ingress&#xff09;和出站&#xff08;Egress&#xff09;流量。1. 基本安全組規則&#xff08;推薦&#xff09;協議端口源IP用途是否必需TCP22你…

排序【各種題型+對應LeetCode習題練習】

目錄 常用排序 快速排序 LeetCode 912 排序數組 歸并排序 LeetCode 912 排序數組 常用排序 名稱排序方式時間復雜度是否穩定快速排序分治O(n log n)否歸并排序分治O(n log n)是冒泡排序交換O(n)是插入排序插入O(n)是選擇排序選擇最值O(n)否C STL sort快排內省排序O(n log…

鴻蒙與web混合開發雙向通信

鴻蒙與web混合開發雙向通信用runJavaScript和registerJavaScriptProxy web entry/src/main/resources/rawfile/1.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content&q…

unity Physics.RaycastNonAlloc

Physics.RaycastNonAlloc 是 Unity 中用于 3D 物理射線檢測的高性能方法&#xff0c;它是 Physics.Raycast 的非分配版本。 方法簽名 public static int RaycastNonAlloc(Ray ray, RaycastHit[] results, float maxDistance Mathf.Infinity, int layerMask DefaultRaycastLay…

數據庫(five day finally)——物物而不物于物,念念而不念于念。(數據庫到此結束!祝世間美好與各位不期而遇,善意常伴汝身!)

1.子查詢&#xff08;1&#xff09;where 子查詢①多行單列配合in和not in操作&#xff08;類似于數據范圍查詢&#xff09;例&#xff1a;顯示工資與各個經理相同的雇員信息&#xff08;包含經理本身&#xff09;。select * from empwhere sal(select sal from emp where jobM…

【甲烷數據集】Sentinel-5P 衛星獲取的全球甲烷數據集-TROPOMI L2 CH?

目錄 數據概述 傳感器 & 衛星信息 監測目標:甲烷(CH?) 數據產品內容 空間與時間覆蓋 云篩選與協同觀測 技術文檔資源 數據下載 Python 代碼繪制 CH4 數據 參考 數據概述 Sentinel-5 Precursor Level 2 Methane (TROPOMI L2 CH?) 數據集是由歐洲哥白尼計劃的 Sentinel…

【數據結構】單鏈表練習(有環)

1.判斷是否是環形鏈表 141. 環形鏈表 - 力扣&#xff08;LeetCode&#xff09; bool hasCycle(struct ListNode *head) {struct ListNode *fast,*slow;fastslowhead;while(fast&&fast->next){fastfast->next->next;slowslow->next;if(fastslow)return tr…

VR 污水廠初體驗:顛覆傳統認知?

第一次戴上 VR 設備走進 VR 污水廠時&#xff0c;那種震撼的感覺至今難以忘懷。仿佛一瞬間&#xff0c;我被傳送到了一個全新的世界&#xff0c;平日里只能在圖紙或實地看到的污水廠&#xff0c;此刻就立體地呈現在眼前。腳下是縱橫交錯的管道&#xff0c;頭頂巨大的處理設備有…

父類 div 自適應高度 子類如何撐滿其高度

使用絕對定位 如果你想要子元素完全撐滿父元素的高度&#xff0c;可以使用絕對定位。這種方法適用于當子元素需要完全覆蓋父元素時。<div class"parent"><div class"child"><!-- 子類內容 --></div> </div>.parent {positio…

從0開始學習R語言--Day51--PH檢驗

在用cox回歸做分析時&#xff0c;我們一般會得出各種變量在結局的風險影響&#xff08;HR大于1&#xff0c;就代表變量值增大&#xff0c;對應結局影響的風險就隨之增大&#xff09;&#xff0c;但是這里有個壞處是&#xff0c;cox回歸得到的是瞬時風險值&#xff0c;我們最多得…

Docker 網絡原理

Linux 常見網絡虛擬化 虛擬網卡:tun/tap虛擬網卡&#xff08;又稱虛擬網絡適配器&#xff09;&#xff0c;即用軟件模擬網絡環境&#xff0c;模擬網絡適配器。在計算機網絡中&#xff0c;tun 與 tap 是操作系統內核中的虛擬網絡設備。不同于普通靠硬件網絡適配器實現的設備&…

【通識】PCB文件

1. PCB文件的導入 在PORTEL99 PCB編輯器的文件菜單中選擇導入先前繪制的CAD文件。導入成功后&#xff0c;編輯器將顯示出元件封裝的基本圖形&#xff0c;為后續操作奠定基礎。將需要抄板的PCB放置于掃描儀中隨后啟動掃描儀&#xff0c;之后啟動AUTO CAD軟件&#xff0c;之后插入…

分布式彈性故障處理框架——Polly(1)

1 前言之服務雪崩 在我們實施微服務之后&#xff0c;服務間的調用變得異常頻繁&#xff0c;多個服務之前可能存在互相依賴的關系&#xff0c;當某個服務出現故障或者是因為服務間的網絡出現故障&#xff0c;導致服務調用的失敗&#xff0c;進而影響到某個業務服務處理失敗&…

【機器學習深度學習】大模型推理速度與私有化部署的價值分析

目錄 前言 一、主流推理框架速度對比 二、為什么 HuggingFace 框架更適合微調驗證&#xff1f; 三、大模型私有化部署的必要性分析 ? 私有化部署的主要動因 1. 數據隱私與業務安全 2. 可控性與性能保障 ? 哪些情況不建議私有部署&#xff1f; 四、總結與選型建議 &…

elementui-admin構建

1、vue-element-admin vue-element-admin是基于element-ui 的一套后臺管理系統集成方案。 功能&#xff1a;介紹 | vue-element-adminA magical vue adminhttps://panjiachen.github.io/vue-element-admin-site/zh/guide/# GitHub地址&#xff1a;https://github.com/PanJia…

深入排查:編譯環境(JDK)與運行環境(JRE/JDK)不一致時的常見 Java 錯誤及解決方案

深入排查&#xff1a;編譯環境&#xff08;JDK&#xff09;與運行環境&#xff08;JRE/JDK&#xff09;不一致時的常見 Java 錯誤及解決方案 在后端 Java 項目中&#xff0c;編譯環境&#xff08;JDK&#xff09; 與 運行環境&#xff08;JRE/JDK&#xff09; 版本不一致&…

[JS逆向] 微信小程序逆向工程實戰

博客配套代碼與工具發布于github&#xff1a;微信小程序 &#xff08;歡迎順手Star一下?&#xff09; 相關爬蟲專欄&#xff1a;JS逆向爬蟲實戰 爬蟲知識點合集 爬蟲實戰案例 逆向知識點合集 前言&#xff1a; 微信小程序對于很多嘗試JS逆向的人群來說&#xff0c;都是一個…

基于5G系統的打孔LDPC編碼和均勻量化NMS譯碼算法matlab性能仿真

目錄 1.引言 2.算法仿真效果演示 3.數據集格式或算法參數簡介 4.算法涉及理論知識概要 4.1打孔技術 4.2 均勻量化NMS譯碼 5.參考文獻 6.完整算法代碼文件獲得 1.引言 在5G通信系統中&#xff0c;信道編碼技術是保障高速率、高可靠性數據傳輸的核心支撐&#xff0c;而低…