ORM-Dapper学习二.关于Dapper
Dapper的简介
Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的。Dapper只有一个代码文件,完全开源,你可以放在项目里的任何位置,来实现数据到对象的ORM操作,体积小速度快。 使用ORM的好处是增、删、改很快,不用自己写sql,因为这都是重复技术含量低的工作,还有就是程序中大量的从数据库中读数据然后创建model,并为model字段赋值。这些ORM都可以轻松给你搞定。ORM给我们开发带来便利时,性能也是一个让我们不得不考虑的问题。一般的ORM性能和直接写原生的sql比都差不少,但是Dapper性能还很错,甚至和DbHelperSQL方式性能高出很多。
Dapper的优势
- Dapper是一个轻型的ORM类。代码就一个SqlMapper.cs文件,编译后体积小。
- Dapper很快。Dapper的速度接近与IDataReader,取列表的数据超过了DataTable。
- Dapper支持多数据库。诸如:Mysql,SqlLite,Mssql系列,Oracle等一系列的数据库。
- Dapper的R支持多表并联的对象。支持一对多 多对多的关系。并且没侵入性,想用就用,不想用就不用,无XML无属性,代码以前怎么写现在还怎么写。
- Dapper原理通过Emit反射IDataReader的序列队列,来快速的得到和产生对象,性能高。
- Dapper支持net2.0及以上版本
- 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 |
其他见解:
- 能很方便地执行数据库 DML 和 DLL 操作。比如,当你执行一个带参数的 SQL 时,SQL 中的变量能与你传递给它的实体或匿名对象中的属性,自定匹配。而我们知道,带参数的 SQL,能提高数据库执行 SQL 的效率。
- 能很方便地将数据库检索结果映射为面向对象的对象。从数据库中的检索结果,通常是张二维表,如 DataTable,而应用程序中是实体类,以及实体类的集合,那么 Dapper 能够将 DataTable 自动地映射成为实体类的集合。
- 能很方便地书写 SQL 语句。比如,写多个 SQL,用分号分隔。
转载于:https://www.cnblogs.com/xing5360/p/6553497.html
ORM-Dapper学习二.关于Dapper相关推荐
- .net Dapper 学习系列(1) ---Dapper入门
目录 写在前面 为什么选择Dapper 在项目中安装Dapper 在项目中使用Dapper 在项目中使用Dapper 进行单表增删改数据操作 总结 写在前面 Dapper 是一款轻量级ORM架构.为解 ...
- .NET-4.ORM 常见框架EFcorn、Dapper、SqlSugar、FreeSql 和ADO.NET
ORM 常见框架 前言 什么是ORM EF Core学习与深入 一.了解 EF Core 1.DbContext 2.数据注释.Fluent API学习 二.简单的案例使用1(推荐参考最佳) 三.简单 ...
- 链路追踪译文学习记录(Dapper!!!非原创!!!学习记录)
#Dapper(阅读翻译论文的学习记录) ##摘要 环境:在复杂的大规模分布式系统中,一个系统多个模块,每个模块可能由不同的团队,语言,横跨多个数据中心的几千台服务器上. 这种环境要求一种可以帮助理解 ...
- (转)MyBatis框架的学习(二)——MyBatis架构与入门
http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图: 下面作简要概述: ...
- C#多线程学习(二) 如何操纵一个线程
C#多线程学习(二) 如何操纵一个线程 原文链接:http://kb.cnblogs.com/page/42529/ [1] C#多线程学习(二) 如何操纵一个线程 [2] C#多线程学习(二) 如何 ...
- spring security 学习二
spring security 学习二 doc:https://docs.spring.io/spring-security/site/docs/ 基于表单的认证(个性化认证流程): 一.自定义登录页 ...
- STL源码剖析学习二:空间配置器(allocator)
STL源码剖析学习二:空间配置器(allocator) 标准接口: vlaue_type pointer const_pointer reference const_reference size_ty ...
- mysql用创建的用户登陆并修改表格_MySQL 基础学习二:创建一个用户表,并增删改查...
MySQL 基础学习二:创建一个用户表,并 增删改查 提示:MySQL 命令建议都用大写,因为小写运行时,还是翻译成大写的. 第一步,创建一个用户表 1,打开控制台,进入数据库 C:\Users\Ad ...
- OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack()
OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack() 参考博客: Harris角点检测原理详解 Harri ...
最新文章
- Feign实现服务调用
- 关于吃掉物理的二次聚合无法实现的需要之旁门左道实现法
- Java内存泄露的理解与解决
- Gradle 设置 本地maven仓库及发布mavenLocal()路径的方法
- java的调试工具_2020年最佳Java调试工具(翻译)
- 光感是什么_Olay5款热门精华:淡斑小白瓶VS光感小白瓶如何选?超A瓶不太A
- 终于快忙出头了,开了个FTP给大家用[mikespook]
- 库卡机器人C4计算机无法启动,KUKA-C4标准版机器人启动时序
- [css] 怎么给手持设备添加特殊样式?
- 如何评价一个产品经理工作做的好坏?
- spring知识点概述
- java泛型概念与通配符含义初探
- c语言程序设计支持win10,win tc 64位下载-wintc C语言编译器64位下载 1.9.1 win10兼容版 - 河东下载站...
- 网络计算机基础思考题答案,[电脑基础知识]计算机网路技术习题参考答案1-8章.doc...
- RePast J介绍
- C语言ascll码表值和字符的互相转换的程序
- java中return与finally的执行顺序分析(根据字节码分析)
- 服务器虚拟化 lpar,HMC与VIOS对新LPAR提供存储与网络虚拟化的支持
- 计算机鼠标知识,计算机基本组成及键盘鼠标知识.ppt
- DCT变换的基函数与基图像