Dapper的简介  

Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的。Dapper只有一个代码文件,完全开源,你可以放在项目里的任何位置,来实现数据到对象的ORM操作,体积小速度快。 使用ORM的好处是增、删、改很快,不用自己写sql,因为这都是重复技术含量低的工作,还有就是程序中大量的从数据库中读数据然后创建model,并为model字段赋值。这些ORM都可以轻松给你搞定。ORM给我们开发带来便利时,性能也是一个让我们不得不考虑的问题。一般的ORM性能和直接写原生的sql比都差不少,但是Dapper性能还很错,甚至和DbHelperSQL方式性能高出很多。

Dapper的优势

  1. Dapper是一个轻型的ORM类。代码就一个SqlMapper.cs文件,编译后体积小。
  2. Dapper很快。Dapper的速度接近与IDataReader,取列表的数据超过了DataTable。
  3. Dapper支持多数据库。诸如:Mysql,SqlLite,Mssql系列,Oracle等一系列的数据库。
  4. Dapper的R支持多表并联的对象。支持一对多 多对多的关系。并且没侵入性,想用就用,不想用就不用,无XML无属性,代码以前怎么写现在还怎么写。
  5. Dapper原理通过Emit反射IDataReader的序列队列,来快速的得到和产生对象,性能高。
  6. Dapper支持net2.0及以上版本
  7. Dapper语法十分简单,并且无须迁就数据库的设计。

Dapper的性能

Dapper 的主要特点是性能。以下数据显示对一个数据库执行 SELECT 出 500 条,并把数据映射到对象中需要多长时间。

性能测试分为三个方面:

  • POCO 序列化框架,支持从数据库获得静态类型的对象。使用原始的 SQL。
  • 动态序列化框架,支持返回对象的动态列表。
  • 典型的框架用法。往往不会涉及编写 SQL。

1. Performance of SELECT mapping over 500 iterations - POCO 序列化

方法

持续时间(毫秒)

备注

Hand coded (using a SqlDataReader)

47

Can be faster

Dapper ExecuteMapperQuery

49

同上

ServiceStack.OrmLite (QueryById)

50

同上

PetaPoco

52

同上

BLToolkit

80

同上

SubSonic CodingHorror

107

同上

NHibernate SQL

104

同上

Linq 2 SQL ExecuteQuery

181

同上

Entity framework ExecuteStoreQuery

631

同上

2.  Performance of SELECT mapping over 500 iterations - dynamic 序列化

方法

持续时间(毫秒)

备注

Dapper ExecuteMapperQuery (dynamic)

48

Massive

52

Simple.Data

95

 

 

 

 

3.  Performance of SELECT mapping over 500 iterations - 典型用法

方法

持续时间(毫秒)

备注

Linq 2 SQL CompiledQuery

81

Not super typical involves complex code

NHibernate HQL

118

Linq 2 SQL

559

Entity framework

859

SubSonic ActiveRecord.SingleOrDefault

3619

其他见解:

  1. 能很方便地执行数据库 DML 和 DLL 操作。比如,当你执行一个带参数的 SQL 时,SQL 中的变量能与你传递给它的实体或匿名对象中的属性,自定匹配。而我们知道,带参数的 SQL,能提高数据库执行 SQL 的效率。
  2. 能很方便地将数据库检索结果映射为面向对象的对象。从数据库中的检索结果,通常是张二维表,如 DataTable,而应用程序中是实体类,以及实体类的集合,那么 Dapper 能够将 DataTable 自动地映射成为实体类的集合。
  3. 能很方便地书写 SQL 语句。比如,写多个 SQL,用分号分隔。

转载于:https://www.cnblogs.com/xing5360/p/6553497.html

ORM-Dapper学习二.关于Dapper相关推荐

  1. .net Dapper 学习系列(1) ---Dapper入门

    目录 写在前面 为什么选择Dapper 在项目中安装Dapper 在项目中使用Dapper 在项目中使用Dapper 进行单表增删改数据操作 总结 写在前面 Dapper 是一款轻量级ORM架构.为解 ...

  2. .NET-4.ORM 常见框架EFcorn、Dapper、SqlSugar、FreeSql 和ADO.NET

    ORM 常见框架 前言 什么是ORM EF Core学习与深入 一.了解 EF Core 1.DbContext 2.数据注释.Fluent API学习 二.简单的案例使用1(推荐参考最佳) 三.简单 ...

  3. 链路追踪译文学习记录(Dapper!!!非原创!!!学习记录)

    #Dapper(阅读翻译论文的学习记录) ##摘要 环境:在复杂的大规模分布式系统中,一个系统多个模块,每个模块可能由不同的团队,语言,横跨多个数据中心的几千台服务器上. 这种环境要求一种可以帮助理解 ...

  4. (转)MyBatis框架的学习(二)——MyBatis架构与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图:  下面作简要概述: ...

  5. C#多线程学习(二) 如何操纵一个线程

    C#多线程学习(二) 如何操纵一个线程 原文链接:http://kb.cnblogs.com/page/42529/ [1] C#多线程学习(二) 如何操纵一个线程 [2] C#多线程学习(二) 如何 ...

  6. spring security 学习二

    spring security 学习二 doc:https://docs.spring.io/spring-security/site/docs/ 基于表单的认证(个性化认证流程): 一.自定义登录页 ...

  7. STL源码剖析学习二:空间配置器(allocator)

    STL源码剖析学习二:空间配置器(allocator) 标准接口: vlaue_type pointer const_pointer reference const_reference size_ty ...

  8. mysql用创建的用户登陆并修改表格_MySQL 基础学习二:创建一个用户表,并增删改查...

    MySQL 基础学习二:创建一个用户表,并 增删改查 提示:MySQL 命令建议都用大写,因为小写运行时,还是翻译成大写的. 第一步,创建一个用户表 1,打开控制台,进入数据库 C:\Users\Ad ...

  9. OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack()

    OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack() 参考博客: Harris角点检测原理详解 Harri ...

最新文章

  1. Feign实现服务调用
  2. 关于吃掉物理的二次聚合无法实现的需要之旁门左道实现法
  3. Java内存泄露的理解与解决
  4. Gradle 设置 本地maven仓库及发布mavenLocal()路径的方法
  5. java的调试工具_2020年最佳Java调试工具(翻译)
  6. 光感是什么_Olay5款热门精华:淡斑小白瓶VS光感小白瓶如何选?超A瓶不太A
  7. 终于快忙出头了,开了个FTP给大家用[mikespook]
  8. 库卡机器人C4计算机无法启动,KUKA-C4标准版机器人启动时序
  9. [css] 怎么给手持设备添加特殊样式?
  10. 如何评价一个产品经理工作做的好坏?
  11. spring知识点概述
  12. java泛型概念与通配符含义初探
  13. c语言程序设计支持win10,win tc 64位下载-wintc C语言编译器64位下载 1.9.1 win10兼容版 - 河东下载站...
  14. 网络计算机基础思考题答案,[电脑基础知识]计算机网路技术习题参考答案1-8章.doc...
  15. RePast J介绍
  16. C语言ascll码表值和字符的互相转换的程序
  17. java中return与finally的执行顺序分析(根据字节码分析)
  18. 服务器虚拟化 lpar,HMC与VIOS对新LPAR提供存储与网络虚拟化的支持
  19. 计算机鼠标知识,计算机基本组成及键盘鼠标知识.ppt
  20. DCT变换的基函数与基图像

热门文章

  1. 实用 Windows 软件系列分享(三)
  2. NewstartHA 配置技巧
  3. 事件根基event_base、事件循环event_loop、事件event、信号事件SignalEvent
  4. 回路电阻测试仪使用中的常见问题及排除方法
  5. 动漫Q版人物头部怎么画?
  6. Rust简短笔记:原始指针(Raw Pointer)
  7. UDP通讯之字节流与protobuf转换(C++版)
  8. 【python与数据分析】Matplotlib数据可视化
  9. 基于SSM的智慧问诊系统
  10. numpy 光速入门示例