轻量级ORM框架——第一篇:Dapper快速学习
一:为什么选择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的记录,如下:
1 static void main(string[] args) 2 { 3 idbconnection connection = new sqlconnection("data source=.;initial catalog=datamip;integrated security=true;multipleactiveresultsets=true"); 4 5 var query = connection.query<users>("select * from users where username=@username", new { username = "jack" }); 6 7 }
图上的亮点就在于能够自动化mapper到我们object上面来,这是我们datareader所不能办到的,对吧~~
3.update操作
这种操作方式,我们还是使用execute方法来实现,和insert是一种套路的哦。
4. delete操作
这里我还是采用参数化的形式来删除userid=10这条记录,方式如下:
最终sql的table展示如下,可以看到已经正确的修改了userid=11的记录,删除了userid=10的record。。。。当然dapper好玩的地方多着呢,
这篇只是一个入门而已。。。希望本篇对大家有帮助~~~
摘自:https://www.cnblogs.com/huangxincheng/p/5828470.html
推荐阅读
-
.NET轻量级ORM框架Dapper入门精通
-
ORM之轻量级框架--Dapper
-
【从零开始搭建自己的.NET Core Api框架】(三)集成轻量级ORM——SqlSugar:3.2 在框架的基础上利用SqlSugar快速实现CRUD实战篇
-
轻量级ORM框架——第一篇:Dapper快速学习
-
.net下开源轻量级ORM框架Dapper扩展系列2
-
Dapper一个和petapoco差不多的轻量级ORM框架
-
.net下开源轻量级ORM框架Dapper扩展系列4(重构与优化)
-
.net下开源轻量级ORM框架Dapper扩展系列3
-
.NET轻量级ORM框架Dapper入门精通
-
ORM之轻量级框架--Dapper