FreeSql (十七)聯表查詢

FreeSql在查詢數據下足了功能,鏈式查詢語法、多表查詢、表達式函數支持得非常到位。

IFreeSql fsql = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=10").Build();[Table(Name = "tb_topic")]
class Topic {[Column(IsIdentity = true, IsPrimary = true)]public int Id { get; set; }public int Clicks { get; set; }public int TestTypeInfoGuid { get; set; }public TestTypeInfo Type { get; set; }public string Title { get; set; }public DateTime CreateTime { get; set; }
}
class TestTypeInfo {public int Guid { get; set; }public int ParentId { get; set; }public TestTypeParentInfo Parent { get; set; }public string Name { get; set; }public List<Topic> Topics { get; set; }
}
class TestTypeParentInfo {public int Id { get; set; }public string Name { get; set; }
}ISelect<Topic> select => fsql.Select<Topic>();

利用導航屬性聯表

sql = select.LeftJoin(a => a.Type.Guid == a.TestTypeInfoGuid).ToSql();
//SELECT a.`Id`, a.`Clicks`, a.`TestTypeInfoGuid`, a__Type.`Guid`, a__Type.`ParentId`, a__Type.`Name`, a.`Title`, a.`CreateTime` 
//FROM `tb_topic` a 
//LEFT JOIN `TestTypeInfo` a__Type ON a__Type.`Guid` = a.`TestTypeInfoGuid`sql = select.LeftJoin(a => a.Type.Guid == a.TestTypeInfoGuid).LeftJoin(a => a.Type.Parent.Id == a.Type.ParentId).ToSql();
//SELECT a.`Id`, a.`Clicks`, a.`TestTypeInfoGuid`, a__Type.`Guid`, a__Type.`ParentId`, a__Type.`Name`, a.`Title`, a.`CreateTime` 
//FROM `tb_topic` a 
//LEFT JOIN `TestTypeInfo` a__Type ON a__Type.`Guid` = a.`TestTypeInfoGuid` 
//LEFT JOIN `TestTypeParentInfo` a__Type__Parent ON a__Type__Parent.`Id` = a__Type.`ParentId`

沒有導航屬性聯表

sql = select.LeftJoin<TestTypeInfo>((a, b) => b.Guid == a.TestTypeInfoGuid).ToSql();
//SELECT a.`Id`, a.`Clicks`, a.`TestTypeInfoGuid`, b.`Guid`, b.`ParentId`, b.`Name`, a.`Title`, a.`CreateTime` 
//FROM `tb_topic` a 
//LEFT JOIN `TestTypeInfo` b ON b.`Guid` = a.`TestTypeInfoGuid`sql = select.LeftJoin<TestTypeInfo>((a, b) => b.Guid == a.TestTypeInfoGuid).LeftJoin<TestTypeParentInfo>((a, c) => c.Id == a.Type.ParentId).ToSql();
//SELECT a.`Id`, a.`Clicks`, a.`TestTypeInfoGuid`, b.`Guid`, b.`ParentId`, b.`Name`, a.`Title`, a.`CreateTime` 
//FROM `tb_topic` a 
//LEFT JOIN `TestTypeInfo` b ON b.`Guid` = a.`TestTypeInfoGuid` 
//LEFT JOIN `TestTypeParentInfo` c ON c.`Id` = b.`ParentId`

聯表任意查

sql = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s.LeftJoin(a => a.TestTypeInfoGuid == b.Guid).LeftJoin(a => b.ParentId == c.Id)).ToSql();
//SELECT a.`Id`, a.`Clicks`, a.`TestTypeInfoGuid`, b.`Guid`, b.`ParentId`, b.`Name`, a.`Title`, a.`CreateTime` 
//FROM `tb_topic` a 
//LEFT JOIN `TestTypeInfo` b ON a.`TestTypeInfoGuid` = b.`Guid` 
//LEFT JOIN `TestTypeParentInfo` c ON b.`ParentId` = c.`Id`

或者:

sql = fsql.Select<Topic, TestTypeInfo, TestTypeParentInfo>().LeftJoin((a, b, c) => a.TestTypeInfoGuid == b.Guid).LeftJoin((a, b, c) => b.ParentId == c.Id).ToSql();
//SELECT a.`Id`, a.`Clicks`, a.`TestTypeInfoGuid`, b.`Guid`, b.`ParentId`, b.`Name`, a.`Title`, a.`CreateTime` 
//FROM `tb_topic` a 
//LEFT JOIN `TestTypeInfo` b ON a.`TestTypeInfoGuid` = b.`Guid` 
//LEFT JOIN `TestTypeParentInfo` c ON b.`ParentId` = c.`Id`

原生SQL聯表

sql = select.LeftJoin("TestTypeInfo b on b.Guid = a.TestTypeInfoGuid and b.Name = ?bname", new { bname = "xxx" }).ToSql();
//SELECT a.`Id`, a.`Clicks`, a.`TestTypeInfoGuid`, a.`Title`, a.`CreateTime` 
//FROM `tb_topic` a 
//LEFT JOIN TestTypeInfo b on b.Guid = a.TestTypeInfoGuid and b.Name = ?bname

系列文章導航

  • (一)入門

  • (二)自動遷移實體

  • (三)實體特性

  • (四)實體特性 Fluent Api

  • (五)插入數據

  • (六)批量插入數據

  • (七)插入數據時忽略列

  • (八)插入數據時指定列

  • (九)刪除數據

  • (十)更新數據

  • (十一)更新數據 Where

  • (十二)更新數據時指定列

  • (十三)更新數據時忽略列

  • (十四)批量更新數據

  • (十五)查詢數據

  • (十六)分頁查詢

  • (十七)聯表查詢

  • (十八)導航屬性

  • (十九)多表查詢

  • (二十)多表查詢 WhereCascade

  • (二十一)查詢返回數據

  • (二十二)Dto 映射查詢

  • (二十三)分組、聚合

  • (二十四)Linq To Sql 語法使用介紹

  • (二十五)延時加載

  • (二十六)貪婪加載 Include、IncludeMany、Dto、ToList

  • (二十七)將已寫好的 SQL 語句,與實體類映射進行二次查詢

  • (二十八)事務

  • (二十九)Lambda 表達式

  • (三十)讀寫分離

  • (三十一)分區分表

  • (三十二)Aop

  • (三十三)CodeFirst 類型映射

  • (三十四)CodeFirst 遷移說明

  • (三十五)CodeFirst 自定義特性

轉載于:https://www.cnblogs.com/FreeSql/p/11531346.html

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

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

相關文章

科目三路考經驗分享

科目三路考&#xff0c;對于一個新手&#xff0c;如果沒有很好的心理素質&#xff0c;就可能會慌張的無法通過科目三路考考試。其次就是起步要領&#xff0c;上車后調整好座位&#xff0c;系好保險帶。把擋位放在空擋&#xff0c;點火&#xff0c;打開左方向燈&#xff0c;切換…

vue 實現瀑布流布局的 組件/插件總匯:vue-waterfall、vue-waterfall-easy、vue-virtual-collection、vue-grid-layout

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 瀑布流作為當前比較流行的一種網頁布局方式&#xff0c;在視覺上呈現出參差不齊、琳瑯滿目、唯美的視覺效果&#xff0c;該布局隨著頁面…

FreeSql (十八)導航屬性

導航屬性是 FreeSql 的特色功能之一&#xff0c;可通過約定配置、或自定義配置對象間的關系。 導航屬性有 OneToMany, ManyToOne, ManyToMany, OneToOne, Parent 五種配置關系。 有了導航屬性&#xff0c;多表查詢會非常方便&#xff0c;lambda 表達式中直接使用導航對象點點點…

做什么運動可以排毒養顏

排毒養顏吃什么很重要&#xff0c;現在的社會污染這么嚴重&#xff0c;人體都置身于有毒的環境中&#xff0c;除了吃的排毒方法&#xff0c;還需要了解做什么運動可以排毒養顏。下面就來介紹幾個簡單的動作來排毒養顏。 方法/步驟 赤腳走路可以增強體質&#xff0c;足底有許多和…

FreeSql (十九)多表查詢

多表查詢&#xff0c;常用的有聯表 LeftJoin/InnerJoin/RightJoin &#xff0c;這三個方法在上篇文章已經介紹過。 除了聯表&#xff0c;還有子查詢 Where Exists&#xff0c;和 Select 子表&#xff1a; IFreeSql fsql new FreeSql.FreeSqlBuilder().UseConnectionString(Fre…

docker啟動,重啟,關閉命令

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 --------------------- 轉自&#xff1a;https://blog.csdn.net/easternunbeaten/article/details/80463837

車禍是怎么發生的 不論你是否開車都該看看!

【導讀】 雖然有越來越多的人拿到了駕照&#xff0c;但是全國仍有10億多人不會開車&#xff0c;本文寫給所有不會開車的人&#xff1a; 我作為一個曾經也不會開車的人&#xff0c;我也曾認為開車的不敢撞人&#xff0c;所以過馬路都非常大膽…… 確實!沒有司機敢撞人!不可能有哪…

FreeSql (二十)多表查詢 WhereCascade

WhereCascade 多表查詢時非常方便&#xff0c;有了它可以很輕松的完成類型軟刪除&#xff0c;租戶條件的功能。 IFreeSql fsql new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, "Data Source127.0.0.1;Port3306;User IDroot;Passwordroot;Ini…

注解 @Deprecated、@deprecated 的使用、說明

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 今天偶然在項目中注意到一個注解&#xff1a;Deprecated 1. 說明&#xff1a; Deprecated 表示此方法已廢棄、暫時可用&#xff0c;但…

FreeSql (二十一)查詢返回數據

FreeSql 采用 ExpressionTree 優化讀取速讀&#xff0c;如果懂技術的你一定知道 .NETCore 技術下除了原生代碼&#xff0c;最快就是 Emit 和 ExpressionTree。 項目在初期使用的反射緩存&#xff0c;雖然 .NETCore 優化了反射性能&#xff0c;但經過與Dapper性能測試對比之后&a…

十二個生活習慣,增加你的心靈壓力

隨著生活節奏的加快&#xff0c;很多人抱怨壓力越來越大。美國《赫芬頓郵報》近日載文指出&#xff0c;一些壓力是外在壓力&#xff0c;而更多的壓力來自我們自身。以下就是在不知不覺中增加自身壓力的習慣。 忘記每日大笑 如果你想不起來上次捧腹大笑的時間&#xff0c;你就該…

VisualCode 查看代碼歷史版本、還原代碼到既定歷史版本

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 我想要類似 eclipse 查看并還原代碼到既定歷史版本的效果。 1. 安裝插件&#xff1a;Local History &#xff0c;點擊右下角 Install 就…

FreeSql (二十二)Dto 映射查詢

適合喜歡使用 dto 的朋友&#xff0c;很多時候 entity 與 dto 屬性名相同&#xff0c;屬性數據又不完全一致。 有的人先查回所有字段數據&#xff0c;再使用 AutoMapper 映射。 我們的功能是先映射&#xff0c;再只查詢映射好的字段&#xff0c;節省了io性能。 Select<Tag&g…

會車有哪些要領?

科目三會車是路考中最簡單的一個環節&#xff0c;同樣&#xff0c;難免有學員在這項目上慘遭“滑鐵盧”。會車原則1、會車時&#xff0c;必須注意保持足夠的安全側向間距。2、一般情況下的會車&#xff0c;空車讓重車&#xff0c;單車讓拖掛貨車&#xff0c;大車讓小車&#xf…

解決 cp: omitting directory ‘./dist’ ( 拷貝失敗 )

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 我有一個腳本部署vue的前端工程。其中有一行&#xff1a; cp ./dist /usr/local/dist/gentle 運行報錯如題。 2. 原因&#xff1a…

科目三要注意的失誤點

科目三是最關鍵的一項考試&#xff0c;也是最容易失分的&#xff0c;那么在考試中又要注意哪些失誤點呢&#xff1f;1.起步時車輛發生闖動&#xff0c;油門與剎車配合不好被扣分&#xff0c;占扣分次數總和的9%&#xff1b;2.方向控制不穩&#xff0c;不能保持車輛直線運動狀態…

解決: cp -rf 命令中參數 -f 失效 ( 依舊要手動確認 )

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 運行 cp -rf 命令時依舊給出無數提示&#xff0c;要求確認&#xff0c;很是麻煩&#xff0c;如下圖&#xff1a; 2. 可能原因&#…

FreeSql (二十四)Linq To Sql 語法使用介紹

原本不支持 IQueryable 主要出于使用習慣的考慮&#xff0c;如果繼承 IQueryable&#xff0c;編寫代碼的智能總會提示出現一堆你不想使用的方法&#xff08;對不起&#xff0c;我有強迫癥&#xff09;&#xff0c;IQueryable 自身提供了一堆沒法實現的方法&#xff0c;還有外部…

科目三路考需準備事項

科目三是技術性較強的一項&#xff0c;對于科目三我們有更多要準備的東西了&#xff0c;那我們應該準備一些什么&#xff1f;接下來學車啦小編指導新手們路考上車準備事項&#xff1a; 上車準備一 1、環視車輛、確保安全。 2、調整駕駛座。身體坐正&#xff0c;雙手向前伸直&am…

前后端分離工程實現 (VUE、JAVA)、附全部源碼

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 整個工程基本情況簡述&#xff1a; 前端工程語言&#xff1a;vue &#xff08;node.js&#xff09; 后端工程語言&#xff1a;java…