我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db,而且市面上的orm框架有很多,其中有一个框架叫做dapper,而且被称为the king of ORM。

一:为什么选择Dapper

1. 性能优越:

其实在各大网站上,我们大概都会看到这样的一个对比效果图,在超过500次poco serialization的过程中所表现的性能,我们发现dapper是第二名,

当然第一名谁也无法超越,越底层的当然久越快,同时也就越麻烦。就好像谁能超过“01代码”呢???

2. 支持多数据库

支持多数据库的本质是因为Dapper是对IDBConnection接口进行了方法扩展,比如你看到的SqlMapper.cs,一旦你这样做了,我们也知道,

SqlConnection,MysqlConnection,OracleConnection都是继承于DBConnection,而DBConnection又是实现了IDBConnection的接口,对吧。。。

二:安装Dapper

install dapper的方式通常有两种:

1. 通过nuget进行安装

   如果你不知道怎么用nuget进行安装,或者不知道install-package是什么,可以在browser上找一下,比如下面这样:

然后我们copy到package console 试试看。

2. 在github上获取源码。

为什么要获取源码,是因为用ilspy调试dapper的源码太费劲了,毕竟现在都是异步编程了,从ilspy中看都是匿名方法很多都无法渗透,废话不多

说,我们只要把Dapper文件夹拉出来然后copy到我们的solution就可以了,如下图:

三:快速CURD操作

其实对数据库的操作莫过于CURD,在进行操作之前我们再配一个Users表。

1. 配置Users表

CREATE TABLE [dbo].[Users](

[UserID] [int] IDENTITY(1,1) NOT NULL,

[UserName] [varchar](50) NULL,

[Email] [varchar](100) NULL,

[Address] [varchar](100) NULL,

CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED

(

[UserID] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY]

2. Insert操作

通常来说,有两种insert操作:

<1>单条insert操作

这是一个简单的参数化insert,而且还可以塞入匿名类型,对吧,跟原始的SqlParameter相比,是不是简单的多???

static void Main(string[] args)

{

IDbConnection connection = new SqlConnection("Data Source=.;Initial Catalog=DataMip;Integrated Security=True;MultipleActiveResultSets=True");

var result = connection.Execute("Insert into Users values (@UserName, @Email, @Address)",

new { UserName = "jack", Email = "380234234@qq.com", Address = "上海" });

}

<2> InsertBulk操作

既然是Bulk操作,那肯定就是批量插入了,我们要做的就是将上面这个 ”匿名对象" 变成 ”匿名对象集合“ 就可以了。。。为了方便操作,这里定义

一个Users类,比如下面这样。。。

static void Main(string[] args)

{

IDbConnection connection = new SqlConnection("Data Source=.;Initial Catalog=DataMip;Integrated Security=True;MultipleActiveResultSets=True");

//var result = connection.Execute("Insert into Users values (@UserName, @Email, @Address)",

//                       new { UserName = "jack", Email = "380234234@qq.com", Address = "上海" });

var usersList = Enumerable.Range(0, 10).Select(i => new Users()

{

Email = i + "qq.com",

Address = "安徽",

UserName = i + "jack"

});

var result = connection.Execute("Insert into Users values (@UserName, @Email, @Address)",usersList);

}

2. Query操作

其实在Dapper在query上提供的的文章太多了。。。这篇我们就按照最简单的参数化查询就好了。。。比如我要找到username=jack的记录,如下:

static void Main(string[] args)

{

IDbConnection connection = new SqlConnection("Data Source=.;Initial Catalog=DataMip;Integrated Security=True;MultipleActiveResultSets=True");

var query = connection.Query<Users>("select * from Users where UserName=@UserName", new { UserName = "jack" });

}

图上的亮点就在于能够自动化mapper到我们object上面来,这是我们DataReader所不能办到的,对吧~~

3.update操作

这种操作方式,我们还是使用Execute方法来实现,和insert是一种套路的哦。

4. delete操作

这里我还是采用参数化的形式来删除UserID=10这条记录,方式如下:

最终sql的table展示如下,可以看到已经正确的修改了UserID=11的记录,删除了UserID=10的record。。。。当然Dapper好玩的地方多着呢,

这篇只是一个入门而已。。。希望本篇对大家有帮助~~~

相关文章

  • Net下无敌的Micro ORM — Dapper

  • .NET Core 使用Dapper 操作MySQL

  • Dapper、Entity Framework 和混合应用

原文地址:http://www.cnblogs.com/huangxincheng/p/5828470.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

第一篇:Dapper快速学习相关推荐

  1. 第一篇博客-学习Markdown

    第一篇博客-学习Markdown 学习Markdown 学习Markdown 井号+空格+标题:几个#就是几级标题 两星+文本+两星:加粗 一星+文本+一星:斜体 三星+文本+三星:斜体加粗 两波浪+ ...

  2. vue中集合取第一个_快速学习Vue框架(知识点集合)

    学习Vue的小伙伴速度看过来,快速学习Vue框架知识点集合贴来啦.建议收藏,尤其基础并不是很扎实的同学,本篇集合贴就是你日后工作的参考手册. 基础知识: ·vue的生命周期:beforeCreate/ ...

  3. 如何写第一篇论文-深度学习中创新点比较小,但是有效果,可以发(水)论文吗? - 王晋东不在家的回答 - 知乎

    作者:王晋东不在家 链接:https://www.zhihu.com/question/528654768/answer/2452424449 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权 ...

  4. 3DMAX学习第一篇:为啥学习3DMAX?

    为啥我作为一个u3d程序员,会学习3dmax呢?这就不得不从图形和模型效果说起了! 首先:我们遇到的情况,可能有模型人员给我们的模型,有些参数可能不是我们想要的,特别是当模型外包出去之后,外包人员不按 ...

  5. 【Hadoop】第一篇--Hadoop生态系统学习路线

    一.Hadoop是什么? Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储.Hadoop实 ...

  6. 第一篇:盘赔学习之基础篇

    关于盘赔的来源我就不再累述,只从两者的关系入手,欧赔是鼻祖,亚盘是欧赔的衍生物,有一位##的朋友曾经说:亚盘是通过让球这个杠杆,将三维变成两极,我觉得很形象,这里借用了.既然是衍生物,就目前来讲,欧赔 ...

  7. 第一篇——APM飞控学习笔记

    关于什么是APM? 可能有很多玩航模或者是向我这样混迹于实验室的垃圾佬(bushi)看到过这个玩意--->>> 从狭义上来说,这个就是APM开源飞控. APM又叫ArduPilot- ...

  8. 126篇殿堂级深度学习论文分类整理 从入门到应用 | 干货

    如果你有非常大的决心从事深度学习,又不想在这一行打酱油,那么研读大牛论文将是不可避免的一步.而作为新人,你的第一个问题或许是:"论文那么多,从哪一篇读起?" 本文将试图解决这个问题 ...

  9. 126篇殿堂级深度学习论文分类整理 从入门到应用(下)

    应用 3.1 自然语言处理 (NLP) █[1] Antoine Bordes, et al. "Joint Learning of Words and Meaning Representa ...

最新文章

  1. atomikos mysql,记一次 Atomikos 分布式事务的使用
  2. Gartner2018新兴技术成熟度曲线:人机界线日益模糊!
  3. arial字体可以商用吗_国外顶级设计公司:PPT配色与字体使用的7条建议
  4. 做301定向跳转对网站优化有什么帮助?
  5. c语言fread读取错误,【求助】C语言fread读取二进制文件时,读取结果全都是零
  6. NTU课程笔记 :CV6422(4) sampling process
  7. 在Java中使用Protocol Buffers
  8. 计算机二级web题目(6)--动态网页技术概述
  9. BZOJ 1877 拆点费用流
  10. matlab 柯西黎曼方程,【判断题】柯西-黎曼方程成立是函数解析的必要条件.
  11. 匿名内部类属于局部内部类吗_内部类详解————匿名内部类
  12. C++11中0与 NULL与nullptr之间的关系
  13. Eclipse设置护眼背景
  14. 基于Jenkins+Gitlab+Harbor+Rancher架构的CI/CD实现
  15. Mac OS git多次需要输入用户名密码config解决
  16. 《算法笔记》胡凡 例题/练习 答案
  17. php 判断客户端类型,怎么使用php判断客户端的类型
  18. RS485/RS422接线图
  19. 全国行政区划数据 - JSON
  20. DEJA_VU3D - Cesium功能集 之 007-军事标绘系列一:简单箭头

热门文章

  1. (译)Windsor入门教程---第三部分 编写第一个Installer
  2. 九度 1376 最近零子序列
  3. nginx 反向代理+ip智能解析
  4. 51CTO下载专题有奖征集建议:您的期待,我们的方向!
  5. 编译AjaxControlToolkit发生错误如何解决?
  6. 使用设计模式构建通用数据库访问类
  7. 基于事件驱动架构构建微服务第1部分:应用程序特定的业务规则
  8. 腾讯二面挂了,就因为这个...
  9. 重磅:.NET 6 发布首个预览版
  10. 【分享】C# 字节帮助类 ByteHelper