ORM-Dapper学习<二>.关于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 条,并把数据映射到对象中需要多长时间。

性能测试分为三个方面:

  • 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

.Net使用Dapper框架(快速上手) .net6快速使用Dapper,本文从Dapper的方法使用、参数、事务和存储过程等方法,提供Dapper框架的代码使用示例使我们快速便捷地使用该ROM框架。 阅读详情

相关推荐

用轻量级ORM--Dapper实现泛型仓储

轻量级ORM框架Dapper,可以实现要求更高性能的数据库访问场景。

物联网大联盟 2754

Dapper入门

dapper如门

mwcxz的博客 8929

Dapper ORM 框架跟我学:第一课 - Dapper ORM 介绍

Dapper 是一个轻量级的微 ORM(微型对象关系映射器),由 Stack Overflow 团队开发并开源。它的设计目标是提供一种简单、高效的方式来与数据库交互,同时保持代码的简洁性和性能。与传统的 ORM 框架不同,Dapper 不会生成复杂的 SQL 查询,也不会管理实体之间的复杂关系。相反,它专注于将 SQL 查询的结果直接映射到 C# 对象,帮助你快速执行数据库操作,而不需要编写大量的样板代码。

caifox的博客 1569

Dapper入门教程

Dapper的入门使用

weixin_49336442的博客 5608

ORM-Dapper学习<>.Dapper的进阶用法

1. 联合查询 A. 写法一 public user_info_model get_user_info__group_info(int id) { using (conn) { string query = @"SELECT * FROM dbo.user_info...

diaochou1478的博客 329

Dapper ORM 框架跟我学:第十课 - Dapper QueryMultiple 方法

Dapper 提供的一个扩展方法,基于 ADO.NET 的接口。用于执行多个 SQL 查询并返回多个结果集。它非常适合用于需要一次性获取多个查询结果的场景,例如获取关联的数据集。在这节课中,我们学习Dapper 的方法,并掌握了如何使用它进行数据库查询,尤其是获取多个查询结果的场景。我们还了解了的各个参数,学会了如何执行多个查询并处理多个结果集。通过这些知识,你可以更加灵活地操作数据库,提升开发效率。是 Dapper 提供的一个扩展方法,基于 ADO.NET 的接口。

caifox的博客 1173

Dapper ORM 框架跟我学:第十四课 - Dapper 第三方库 Dapper-Contrib 的使用

Dapper-Contrib 是 Dapper 的一个扩展库,它为 Dapper 提供了额外的功能,使得我们可以更方便地进行 CRUD(创建、读取、更新、删除)操作。通过使用 Dapper-Contrib,我们可以减少手动编写 SQL 查询的工作量,提高开发效率。在这节课中,我们学习了如何使用 Dapper-Contrib 来简化数据库操作。通过合理使用 Dapper-Contrib 提供的数据标注和扩展方法,我们可以大大减少手动编写 SQL 查询的工作量,提高开发效率。数据标注:通过使用[Key]

caifox的博客 1903

C#进阶-轻量级ORM框架Dapper的使用教程与原理详解

本文详细介绍了Dapper在C#中的使用方法,包括Dapper的基本概念、与其他持久层框架的比较、基本语法和高级语法的使用,并通过实例讲解了如何在项目中集成和使用DapperDapper以其高效的性能和简洁的API受到开发者的青睐,适用于各种数据库操作需求。本文还将深入探讨Dapper的核心原理,通过内部代码展示其工作机制。最后,总结了Dapper的优缺点及其在实际开发中的应用场景,为开发者提供全面的指导。

踏雨歌青春,诗酒趁年华 1万+

Dapper ORM 框架跟我学:第十一课 - Dapper 中参数的使用

Dapper 中,参数可以帮助我们动态地传递数据给 SQL 查询,防止 SQL 注入攻击,并提高查询的灵活性。接下来,我们将详细介绍几种常见的参数类型及其使用方法。在这节课中,我们学习Dapper 中参数的多种使用方法,包括匿名类型参数、动态参数、列表参数、字符串参数和表值参数。这些参数类型各有特点,适用于不同的场景。通过合理使用这些参数,我们可以更灵活地操作数据库,提高应用程序的性能和安全性。匿名类型参数:适合在不需要定义实体类的情况下传递简单的参数。动态参数。

caifox的博客 1211

SQLite学习——Dapper初识

dapper下载:https://www.nuget.org/packages/Dapper/1.40.0

jiDxiaohuo的博客 1120

轻量高效ORMDapper

大家好,我是大成子。今天学习ORM框架之dapper介绍dapper是一个简单的对象关系映射框架(ORM----Object Relation Mapping),它几乎与原始的http://ADO.NET 数据操作读取一样快(反正我http://ado.net已经忘完了╥__╥,以前用的最多是linq to sql和ef,不需要写sql语句,使用linq操作数据源),它负责数据库与编程语言之间的映...

周星星 464

ORM框架EF和Dapper如何选型,他们都有哪些优缺点

EF和Dapper都是ORM框架,那什么是ORM呢? ORM的全称是Object Relational Mapping,即对象关系映射.EF和Dapper他们的共同作用,都是将关系型数据库中的表的数据,映射成为对象.这样,开发人员就可以把对数据库的操作转化为对这些对象的操作. 因此他们共同目的就是:为了方便开发人员,以面向对象的思想来实现对数据库的操作. 那他们又有什么优缺点呢?我们实际的软...

屈先生不穿大棉袄~ 5547

C#进阶-Dapper原理解析与使用教程

本文详细介绍了Dapper在C#中的使用方法,包括Dapper的基本概念、与其他持久层框架的比较、基本语法和高级语法的使用,并通过实例讲解了如何在项目中集成和使用Dapper。最后,总结了Dapper的优缺点及其在实际开发中的应用场景。一、Dapper介绍1. Dapper介绍Dapper是一个轻量级的ORM(对象关系映射...

cnzzs的博客 2500

探索Dapper与EF Core等ORM框架的神器

探索Dapper与EF Core等ORM框架的神器

qq_64948696的博客 1551

Dapper

1. 简介 Dapper.NET下一个轻量级的ORM框架,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的。也就是说实体类都要自己写。它没有复杂的配置文件,一个单文件就可以了。Dapper通过提供IDbConnection扩展方法来进行工作。 Dapper没有定义特定的数据库要求,它支持所有ADO.NET支持的数据库,如 SQLite, SQL CE, Firebird, Oracle, MySQL, PostgreSQL, SQL Server 等。 国外知名网站

极客神殿 1029

Dapper ORMDapperExtensions 从入门到精通

Dapper 是一个轻量级的 ORM(对象关系映射)工具,它基于 ADO.NET 实现,能够显著提高数据库操作的性能和效率。Dapper 由 Stack Overflow 团队开发,最初是为了优化其网站的数据库访问性能而设计的。它通过扩展接口,提供了一种简单而高效的方式来执行 SQL 查询和更新操作。性能优势:Dapper 的性能非常出色,因为它直接操作,避免了传统 ORM 框架中复杂的映射和缓存机制。在许多场景下,Dapper 的性能比传统 ORM 框架高出数倍。易用性。

caifox的博客 2331

Dapper的介绍和使用

目录 概述 2.准备工作 3.使用Dapper访问数据库 4.小节 概述 一般而言,我们在使用dotnet 技术站时,涉及到数据库层面,往往会选择EFcore 或者Nhibernate,它们好是好,但是当你的项目比较小的时候,用这些会有一种杀鸡用牛刀的感觉,因为无论是EFcore还是Nhibernate都是比较大型的工具。这时使用Dapper就很符合你的需求了。 Dapper.Net的简单对象映射器(ORM),可以高效的操作数据库,与EFcore 侧重点不同,它提供更加高效的数据.

q__y__L的博客 5482

.Net后端开发框架-Dapper框架】-Dappe轻量级ORM框架

Dappe轻量级ORM框架学习 dapper介绍 Dapper.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的,可以实现数据到对象的ORM操作,体积小速度快(性能不错),使用ORM的好处是对数据的增、删、改查的速度很快,还有就是程序中大量的从数据库中读数据然后创建model,并为model字段赋值。Dapper都可

未名学园 7866
上一篇: ORM-Dapper学习<一>.ORM框架简单介绍
下一篇: ORM-Dapper学习<三>.Dapper的安装
diaochou1478
博客等级 码龄10年 1粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值