深入Dapper.NET源码
經過業界前輩、StackOverflow多年推廣,「Dapper搭配Entity Framework」成為一種功能強大的組合,它滿足「安全、方便、高效、好維護」需求。
但目前中文網路文章,雖然有很多關于Dapper的文章但都停留在如何使用,沒人系統性解說底層原理。所以有了此篇「深入Dapper源碼」想帶大家進入Dapper底層,了解Dapper的精美細節設計、高效原理,并學起來實際應用在工作當中。
這系列總共花了筆者連續25天的時間,除了想幫助讀者外,最大的收獲就是我自己在這期間更了解Dapper底層原理,并且學習Dapper精心的細節、框架處理。
另外想提Dapper作者之一Marc Gravell,真的非常熱心,在寫文章的期間有幾個概念疑問,發issue詢問,他都會熱心、詳細的回覆。并且也發現他對代碼的品質要求之高,舉例 : 在S.O發問,遇到他在底下留言 :?「他對目前Dapper IL的架構其實是不滿意的,甚至覺得粗糙,想搭配protobuf-net技術打掉重寫」?(謎之聲 : 真令人敬佩 )
寫這篇的初衷,是希望本系列可以幫助到讀者
了解底層邏輯,知其所以然,避免寫出吃掉效能的怪獸,更進一步完整的利用Dapper優點開發專案
可以輕松面對Dapper的面試,比起一般使用Dapper工程師回答出更深層的概念
從最簡單Reflection到常用Expression到最細節Emit從頭建立Mapping方法,帶讀者漸進式了解Dapper底層強型別Mapping邏輯
了解動態建立方法的重要概念「結果反推程式碼」
有基本IL能力,可以利用IL反推C#代碼方式看懂其他專案的底層Emit邏輯
了解Dapper因為緩存的算法邏輯,所以不能使用錯誤字串拼接SQL
文章的內容很長,具體內容請使用瀏覽器閱讀:
前言、目錄、安裝環境
Dynamic Query 原理 Part1
Dynamic Query 原理 Part2
Strongly Typed Mapping 原理 Part1 : ADO.NET對比Dapper
Strongly Typed Mapping 原理 Part2 : Reflection版本
Strongly Typed Mapping 原理 Part3 : 動態建立方法重要概念「結果反推程式碼」優化效率
Strongly Typed Mapping 原理 Part4 : Expression版本
Strongly Typed Mapping 原理 Part5 : Emit IL反建立C#代碼
Strongly Typed Mapping 原理 Part6 : Emit版本
Dapper 效率快關鍵之一 : Cache 緩存原理
錯誤SQL字串拼接方式,會導致效率慢、內存泄漏
Dapper SQL正確字串拼接方式 : Literal Replacement
Query Multi Mapping 使用方式
Query Multi Mapping 底層原理
QueryMultiple 底層原理
TypeHandler 自訂Mapping邏輯使用、底層邏輯
CommandBehavior的細節處理
Parameter 參數化底層原理
IN 多集合參數化底層原理
DynamicParameter 底層原理、自訂實作
單次、多次 Execute 底層原理
ExecuteScalar應用
原文鏈接:https://www.cnblogs.com/ITWeiHan/p/11614704.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結
以上是生活随笔為你收集整理的深入Dapper.NET源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样的项目才能称为“成功项目”?
- 下一篇: 田牌魔术 | .NET Core 3.0