第十一屆 佳作

software-dev
🌊 進階學習 ADO.NET、Dapper、Entity Framework
暐翰

系列文章

DAY 1

【深入Dapper.NET源碼】前言、安裝環境

筆者推薦閱讀整合一篇文章版本 連結 : shps951023/Trace-Dapper.NET-Source-Code 目錄 前言、安裝環境 Dyn...

DAY 2

【深入Dapper.NET源碼】Dynamic Query 原理 Part1

在前期開發階段因為表格結構還在調整階段,或是不值得額外宣告類別輕量需求,使用Dapper dynamic Query可以節省下來回修改class屬性的時間。當...

DAY 3

【深入Dapper.NET源碼】Dynamic Query 原理 Part2

有了前面簡單ExpandoObject Dynamic Query例子的概念後,接著進到底層來了解Dapper如何細節處理,為何要自訂義DynamicMeta...

DAY 4

【深入Dapper.NET源碼】 Strongly Typed Mapping 原理 Part1 : ADO.NET對比Dapper

接下來是Dapper關鍵功能 Strongly Typed Mapping,因為難度高,這邊會切分成多篇來解說。 第一篇先以ADO.NET DataReade...

DAY 5

【深入Dapper.NET源碼】 Strongly Typed Mapping 原理 Part2 : Reflection版本

在前面ADO.NET Mapping例子可以發現嚴重問題「沒辦法多類別共用方法,每新增一個類別就需要重寫代碼」。要解決這個問題,可以寫一個共用方法在Runti...

DAY 6

【深入Dapper.NET源碼】Strongly Typed Mapping 原理 Part3 : 動態建立方法重要概念「結果反推程式碼」優化效率

接著使用Expression來解決Reflection版本問題,主要是利用Expression特性 : 「可以在Runtime時期動態建立方法」來解決問題。...

DAY 7

【深入Dapper.NET源碼】Strongly Typed Mapping 原理 Part4 : Expression版本

有了前面的邏輯,就著使用Expression實作動態建立方法。 為何先使用 Expression 實作而不是 Emit ? 除了有能力動態建立方法,相比Emi...

DAY 8

【深入Dapper.NET源碼】Strongly Typed Mapping 原理 Part5 : Emit IL反建立C#代碼

有了前面Expression版本概念後,接著可以進到Dapper底層最核心的技術 : Emit。 首先要有個概念,MSIL(CIL)目的是給JIT編譯器看的,...

DAY 9

【深入Dapper.NET源碼】Strongly Typed Mapping 原理 Part6 : Emit版本

以下代碼是Emit版本,我把C#對應IL部分都寫在註解。 public static class DemoExtension { public static...

DAY 10

【深入Dapper.NET源碼】Dapper 效率快關鍵之一 : Cache 緩存原理

為何Dapper可以這麼快? 前面介紹到動態使用 Emit IL 建立 ADO.NET Mapping 方法,但單就這功能無法讓 Dapper 被稱為輕量OR...