29

深入Dapper.NET源码

 4 years ago
source link: https://www.tuicool.com/articles/Jf2IRvI
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

经过业界前辈、StackOverflow多年推广,「Dapper搭配Entity Framework」成为一种功能强大的组合,它满足 「安全、方便、高效、好维护」 需求。

但目前中文网路文章,虽然有很多关于Dapper的文章但都停留在如何使用,没人系统性解说底层原理。 所以有了此篇「深入Dapper源码」想带大家进入Dapper底层,了解Dapper的精美细节设计、高效原理,并 学起来 实际应用在工作当中。

这系列总共花了笔者连续25天的时间,除了想帮助读者外,最大的收获就是我自己在这期间更了解Dapper底层原理,并且学习Dapper精心的细节、框架处理。

另外想提Dapper作者之一Marc Gravell,真的非常热心,在写文章的期间有几个概念疑问,发issue询问,他都会热心、详细的回覆。 并且也发现他对代码的品质要求之高,举例 : 在S.O发问,遇到他在底下留言 :  「他对目前Dapper IL的架构其实是不满意的,甚至觉得粗糙,想搭配protobuf-net技术打掉重写」  (谜之声 : 真令人敬佩 )

写这篇的初衷,是希望本系列可以帮助到读者

  1. 了解底层逻辑,知其所以然,避免写出吃掉效能的怪兽,更进一步完整的利用Dapper优点开发专案

  2. 可以轻松面对Dapper的面试,比起一般使用Dapper工程师回答出更深层的概念

  3. 从最简单Reflection到常用Expression到最细节Emit从头建立Mapping方法,带读者 渐进式 了解Dapper底层强型别Mapping逻辑

  4. 了解动态建立方法的重要概念 「结果反推程式码」

  5. 有基本IL能力,可以利用IL反推C#代码方式看懂其他专案的底层Emit逻辑

  6. 了解Dapper因为缓存的算法逻辑,所以 不能使用错误字串拼接SQL

文章的内容很长,具体内容请使用浏览器阅读:

  1. 前言、目录、安装环境

  2. Dynamic Query 原理 Part1

  3. Dynamic Query 原理 Part2

  4. Strongly Typed Mapping 原理 Part1 : ADO.NET对比Dapper

  5. Strongly Typed Mapping 原理 Part2 : Reflection版本

  6. Strongly Typed Mapping 原理 Part3 : 动态建立方法重要概念「结果反推程式码」优化效率

  7. Strongly Typed Mapping 原理 Part4 : Expression版本

  8. Strongly Typed Mapping 原理 Part5 : Emit IL反建立C#代码

  9. Strongly Typed Mapping 原理 Part6 : Emit版本

  10. Dapper 效率快关键之一 : Cache 缓存原理

  11. 错误SQL字串拼接方式,会导致效率慢、内存泄漏

  12. Dapper SQL正确字串拼接方式 : Literal Replacement

  13. Query Multi Mapping 使用方式

  14. Query Multi Mapping 底层原理

  15. QueryMultiple 底层原理

  16. TypeHandler 自订Mapping逻辑使用、底层逻辑

  17. CommandBehavior的细节处理

  18. Parameter 参数化底层原理

  19. IN 多集合参数化底层原理

  20. DynamicParameter 底层原理、自订实作

  21. 单次、多次 Execute 底层原理

  22. ExecuteScalar应用

原文链接: https://www.cnblogs.com/ITWeiHan/p/11614704.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

b2Q7ryq.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK