zoukankan      html  css  js  c++  java
  • Dapper 学习(一) 认识Dapper

    什么是Dapper

    Dapper是一个简单的.NET对象映射器,在速度方面具有"King of Micro ORM"的头衔,几乎与使用原始的ADO.NET数据读取器一样快。ORM是一个对象关系映射器,它负责数据库和编程语言之间的映射。Dapper通过扩展IDbConnection提供一些有用的扩展方法去查询您的数据库。

    Dapper是如何工作的

    它可以分为三个步骤:

    • 创建一个IDbConnection接口对象;
    • 编写一个查询SQL来执行CRUD操作;
    • 将查询SQL作为Execute方法的参数传递;

    为什么选择Dapper

    • 轻量。只有一个文件(SqlMapper.cs),编译完成之后只有120k(好象是变胖了)
    • 速度快。Dapper的速度接近与IDataReader,取列表的数据超过了DataTable。
    • 支持多种数据库。Dapper可以在所有Ado.net Providers下工作,包括sqlite, sqlce, firebird, oracle, MySQL, PostgreSQL and SQL Server
    • 可以映射一对一,一对多,多对多等多种关系。
    • 性能高。通过Emit反射IDataReader的序列队列,来快速的得到和产生对象,性能不错。
    • 支持FrameWork2.0,3.0,3.5,4.0,4.5

    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

     

    方法

    Dapper会用以下几个方法扩展您的IDbConnection接口:

    • Execute
    • Query
    • QueryFirst
    • QueryFirstOrDefault
    • QuerySingle
    • QuerySingleOrDefault
    • QueryMultiple

    参数

    执行和查询方法可以用以下几种不同的方式使用参数:

    • 匿名类型
    • 动态类型
    • 列表类型
    • 字符串类型

    结果

    查询方法返回的结果可以映射到以下几种类型:

    • 匿名类型
    • 强类型
    • 多映射
    • 多结果
    • 多类型

    工具

    • 异步
    • 缓冲
    • 事务
    • 存储过程
  • 相关阅读:
    简单的Vue示例
    Vue开发环境搭建基本操作
    2020CentOS官网下载镜像方法
    while((ch=getchar()) !=EOF && ch != ' ');语句作用
    Mac 下使用svn
    用树形结构递归渲染权限列表
    .net core中使用jwt进行认证
    C#中异步多线程的实现方式
    redis-避免生产环境使用keys命令
    让visual studio总是以管理员身份启动
  • 原文地址:https://www.cnblogs.com/for917157ever/p/14105970.html
Copyright © 2011-2022 走看看