使用ORM快速獲取業務對象列表

??????? 通常在實際開發中,業務對象的信息是需要來自多個數據表的。

??????? 我們如果想要獲取這個業務對象,就要先查詢數據表,再把查詢到的數據依次循環,組合轉換封裝成業務要使用的對象類型列表。

??????? 如果使用了ORM,那么這個過程就可以簡化。示例代碼如下:

public boo1 GetManyApiEntities( out string error
, Dictionary< Guid, List<Guid>> dic 
, out List<API_EntityInfo> Info
, out List<Tuple<Guid, Guid>> errDevRelated
, out List<Tuple<Guid, Guid>> errVars)
{ error=string.Empty;var sugarDb = new SqlSugarScope(){//...數據庫連接初始化};Info = new List<API_EntityInfo>();errDevRelated = nul1;errVars = null;try{foreach (var item in dic){ //list對象轉字典var tempDlls = sugarDb. Queryable<EDll>().Where(it => it.TestModel == item. Key && iten. Value.Contains(it. EGuid)).ToList ().GroupBy (it => it. EGuid).ToList ().ToDictionary(g => g.Key, g => g.ToList ());//查詢數據表,并轉換成對象var tempObj = sugarDb. Queryable<EntityInfo>().LeftJoin<Vars>((s, v) => iten.Key == v. TestMlodel &&  v. VarsInfoGuid == s.DefaultVarsGuid).LeftJoin(Related>((s, v, r) => r.TestModel == item. Key && r.RelateInfoGuid == s.DefaultDevRelateGuid).Where(s => s. TestMlodel == item.Key && item.Value.Contains(s. EGuid)).Select((s, v, r) =) new API_EntityInfo(){ TestModelID = s. TestModel,EntityID = s. EGuid,Entity = s,Related = r, Vars= v}).ToList();if(tempD11s.Keys.Count >0){foreach (var kv in tempDlls){tempObj.Find(x => x. EGuid == kv.Key).SeqActionInfos = kv.Value;}}Info. AddRange (tempObj);}   if(Info.Count >0){ errDevRelated = Info.FindAll(x => x.SeqRelate == nul1). Select (x => new Tuple(Guid, Guid> (x. EGuid, z.TestModelID)).ToList ();errVars = Info.FindAll(x =>x.SeqVars = nul1).Select(x => new Tuple(Guid, Guid> (x. EGuid, z. TestModelID)).ToList ();return true;}}catch (System.Exception ex){error=ex.Message;} return false;
} 

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

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

相關文章

Stability AI 推出 Stable Artisan,終于可以在Discord上使用Stable Diffusion了!

Stable Diffusion 社區最常見的要求之一是能夠直接在 Discord 上使用他們的模型。近期&#xff0c;Stability AI 推出 Stable Artisan&#xff0c;這個需求終于被實現了。 Stable Artisan 支持在 Discord 上生成媒體&#xff0c;由 Stability AI 的尖端圖像和視頻模型 Stable D…

基于Springboot的實習生管理系統(有報告)。Javaee項目,springboot項目。

演示視頻&#xff1a; 基于Springboot的實習生管理系統&#xff08;有報告&#xff09;。Javaee項目&#xff0c;springboot項目。 項目介紹&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三層體系結構&a…

mysql group by使用方法實例講解

MySQL中GROUP BY語句用于對某個或某些字段查詢分組&#xff0c;并返回重復記錄的第一條&#xff0c;本文章通過實例向大家介紹mysql group by使用方法和需要注意的地方&#xff0c;感興趣的朋友可以參考一下。 現在有這樣一個數據表book idfirst_namelast_namecityage1JasonM…

知乎知+廣告推廣該如何做?怎么收費?

知乎作為一個匯聚高質量用戶群體的知識分享平臺&#xff0c;成為了眾多品牌和產品推廣的優選之地。特別是知乎的“知”廣告推廣服務&#xff0c;以其精準定向、內容原生的特點&#xff0c;深受廣告主青睞。 一、知乎知廣告推廣基礎 1. 什么是知乎知&#xff1f; 知是知乎官方…

C++初階學習第七彈——探索STL奧秘(二)——string的模擬實現

標準庫中的string&#xff1a;C初階學習第六彈——string&#xff08;1&#xff09;——標準庫中的string類-CSDN博客 前言&#xff1a; 在前面我們已經學習了如何使用標準庫中的string類&#xff0c;但作為一個合格的程序員&#xff0c;我們不僅要會用&#xff0c;還要知道如…

C++類和對象下——實現日期類

前言 在學習了類和對象的六大成員函數后&#xff0c;為了鞏固我們學習的知識可以手寫一個日期類來幫助我們理解類和對象&#xff0c;加深對于其的了解。 默認函數 構造函數 既然是寫類和對象&#xff0c;我們首先就要定義一個類&#xff0c;然后根據實際需要來加入類的數據與函…

AI編程工具為什么選github copilot?

Github Copilot 是一個奇跡 它的競爭對手&#xff08;Amazon, Google, Meta, 騰訊&#xff09;都是免費的&#xff0c;但每月10-20美元的Github Copilot市場占有率最高。 1、2021年6月上線&#xff0c;比ChatGPT早近一年半 2、GitHub統計&#xff1a; 88%的用戶獲得效率提升平…

element ui的確認提示框文字樣式修改

修改確認提示框文字樣式修改&#xff0c;使用message屬性修改&#xff1a; 例&#xff1a; js代碼&#xff1a; this.$msgbox({title: 確定要刪除嗎?,message: this.$createElement(p, null, [this.$createElement(span, { style: color: red }, 該素材一旦刪除&#xff0c;…

Spring Boot日志

目錄 一、日志概述 1、為什么要學習日志&#xff1f; 2、日志的用途 &#xff08;1&#xff09;系統監控 &#xff08;2&#xff09;數據采集 &#xff08;3&#xff09;日志審計 二、日志使用 1、打印日志 &#xff08;1&#xff09;在程序中得到日志對象 &#xf…

QNX SLM介紹

QNX SLM SLM是Qnx中用來加載Application的組件&#xff0c;它可以監控Application行為&#xff08;比如異常退出時重新Application拉起&#xff09;、控制Application間的啟動時序。 QNX的SLM與Android RC文件類似。 下面摘自QNX官網介紹 System launch and monitor: launch c…

Redis日常維護流程及技巧:確保穩定性與性能

目錄 一、監控和報警設置 1.實時監控&#xff1a;洞察Redis的脈搏 &#xff08;1&#xff09;. 資源使用監控 &#xff08;2&#xff09;. 數據訪問模式監控 &#xff08;3&#xff09;. 持久化監控 &#xff08;4&#xff09;. 客戶端連接 2.報警機制&#xff1a;快速響…

標準Modbus TCP雙網口開關量模塊

M140E以太網遠程I/O無線數據采集模塊是一款工業級、隔離設計、高可靠性、高穩定性和高精度數據采集模塊&#xff0c;嵌入式32位高性能微處理器MCU&#xff0c;集成2路工業10/100M自適應以太網模塊里面。提供多種I/O&#xff0c;支持標準Modbus TCP&#xff0c;可集成到SCADA、O…

Spring STOMP-連接到消息代理

STOMP 代理中繼維護一個與消息代理的“系統”TCP 連接。這個連接僅用于來自服務器端應用程序的消息&#xff0c;不用于接收消息。您可以為此連接配置STOMP憑據&#xff08;即STOMP幀的login和passcode頭部&#xff09;。這在XML命名空間和Java配置中都以systemLogin和systemPas…

CentOs搭建Kubernetes集群

kubeadm minikube 還是太“迷你”了&#xff0c;方便的同時也隱藏了很多細節&#xff0c;離真正生產環境里的計算集群有一些差距&#xff0c;畢竟許多需求、任務只有在多節點的大集群里才能夠遇到&#xff0c;相比起來&#xff0c;minikube 真的只能算是一個“玩具”。 Kuber…

spring基礎使用(案例)

基于xml使用&#xff1a; 準備&#xff1a; 1.Dao層&#xff08;接口&#xff09;&#xff1a; public interface UserDao {public void save(); } 1.1 Dao層&#xff08;實現類&#xff09;&#xff1a; public class UserDaoIim implements UserDao {Overridepublic vo…

Day53代碼隨想錄動態規劃part13:300.最長遞增子序列、674. 最長連續遞增序列、718. 最長重復子數組

Day52 動態規劃part13 300.最長遞增子序列 leetcode鏈接&#xff1a;300. 最長遞增子序列 - 力扣&#xff08;LeetCode&#xff09; 題意&#xff1a;給你一個整數數組 nums &#xff0c;找到其中最長嚴格遞增子序列的長度。子序列是由數組派生而來的序列&#xff0c;刪除&a…

23種設計模式(軟考中級 軟件設計師)

設計模式 23個設計模式&#xff0c;23個意圖 1. 設計模式概要 設計模式的核心在于提供了相關問題的解決方案&#xff0c;使得人們可以更加簡單方便的復用成功的設計和體系結構 設計模式的類別 創建型結構型行為型類工廠方法模式適配器模式&#xff08;類&#xff09;解釋器模…

物聯網五層架構分析

物聯網五層架構分析 隨著科技的迅速發展&#xff0c;物聯網&#xff08;IoT&#xff09;作為日常生活中不可或缺的一部分&#xff0c;已融入人們的生活和工作中。物聯網五層架構&#xff0c;包括感知層、網絡層、數據層、應用層和業務層&#xff0c;扮演著關鍵的角色。 感知層 …

網絡庫-libcurl介紹

1.簡介 libcurl 是一個功能強大的庫&#xff0c;支持多種協議&#xff0c;用于數據傳輸。它廣泛應用于實現網絡操作&#xff0c;如HTTP、HTTPS、FTP、FTPS、SCP、SFTP等。libcurl 提供了豐富的 API&#xff0c;可以在多種編程語言中使用。 libcurl 主要特點 支持多種協議&am…