经过业界前辈、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