ORM框架之Dapper简介和性能测试

 更新时间:2022年01月01日 07:55:28   作者:QFN-齐  
这篇文章介绍了ORM框架之Dapper简介和性能测试,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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 条,并把数据映射到对象中需要多长时间。

性能测试分为三个方面:

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

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

方法持续时间(毫秒)备注
Hand coded (using a SqlDataReader)47Can be faster
Dapper ExecuteMapperQuery49同上
ServiceStack.OrmLite (QueryById)50同上
PetaPoco52同上
BLToolkit80同上
SubSonic CodingHorror107同上
NHibernate SQL104同上
Linq 2 SQL ExecuteQuery181同上
Entity framework ExecuteStoreQuery631同上

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

方法持续时间(毫秒)备注
Dapper ExecuteMapperQuery (dynamic)48 
Massive52 
Simple.Data95 

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

方法 持续时间(毫秒)备注
Linq 2 SQL CompiledQuery81Not super typical involves complex code
NHibernate HQL118 
Linq 2 SQL559 
Entity framework859 
SubSonic ActiveRecord.SingleOrDefault3619 

其他见解:

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

到此这篇关于ORM框架之Dapper简介和性能测试的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • .Net Core使用SignalR实现斗地主游戏

    .Net Core使用SignalR实现斗地主游戏

    本文详细讲解了.Net Core使用SignalR实现斗地主游戏的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • WPF框架之Prism介绍

    WPF框架之Prism介绍

    这篇文章介绍了WPF的Prism框架,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-02-02
  • 搭建基础结构的ABP解决方案介绍

    搭建基础结构的ABP解决方案介绍

    这篇文章介绍了搭建基础结构的ABP解决方案的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • WPF引用MVVM框架与使用方法

    WPF引用MVVM框架与使用方法

    这篇文章介绍了WPF引用MVVM框架与使用方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01
  • Blazor数据绑定用法

    Blazor数据绑定用法

    这篇文章介绍了Blazor数据绑定的用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01
  • ASP.NET CORE读取json格式配置文件

    ASP.NET CORE读取json格式配置文件

    这篇文章介绍了ASP.NET CORE读取json格式配置文件的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • ASP.NET中CheckBoxList复选框列表控件详细使用方法

    ASP.NET中CheckBoxList复选框列表控件详细使用方法

    本文主要介绍CheckBoxList几种常见的用法,并做出范例演示供大家参考,希望对学习asp.net的朋友有所帮助。
    2016-04-04
  • WPF框架Prism中View Injection用法介绍

    WPF框架Prism中View Injection用法介绍

    这篇文章介绍了WPF框架Prism中View Injection的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • asp.net(C#) Access 数据操作类

    asp.net(C#) Access 数据操作类

    asp.net(C#) Access 数据操作类 实现代码,有需要这方面的朋友可以熟悉下。
    2009-06-06
  • ASP.net(c#)打造24小时天气预报及实时天气

    ASP.net(c#)打造24小时天气预报及实时天气

    ASP.net(c#)打造24小时天气预报及实时天气...
    2006-12-12

最新评论