dapperpoco mysql_Dapper一个和petapoco差不多的轻量级ORM框架

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

叫做dapper,而且被称为the king of ORM。

一:为什么选择Dapper

1. 性能优越:

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

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

f79a70aaeb81c6b2d2474b18a3104cb8.png

2. 支持多数据库

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

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

65049d8db0b3068a2a17211be26376e0.png

二:安装Dapper

install dapper的方式通常有两种:

1. 通过nuget进行安装

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

e8bd4fade572957cfe0b4de28da18aa6.png

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

ac7c30df46807c4bf418f4ddaeda5bee.png

91fabdd675bcb8b8debaa6a570f407c5.png

2. 在github上获取源码。

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

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

fc84883604cdbd42f2a310346bfb878e.png

06fc5485b5a91dc9e3d2d924070d805b.png

三:快速CURD操作

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

1. 配置Users表

48304ba5e6f9fe08f3fa1abda7d326ab.png

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]

48304ba5e6f9fe08f3fa1abda7d326ab.png

2. Insert操作

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

<1>单条insert操作

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

48304ba5e6f9fe08f3fa1abda7d326ab.png

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 = "上海" });

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

<2> InsertBulk操作

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

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

48304ba5e6f9fe08f3fa1abda7d326ab.png

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);

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

c05d24bd9838542a98b760c4a16be737.png

2. Query操作

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

48304ba5e6f9fe08f3fa1abda7d326ab.png

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("select * from Users where UserName=@UserName", new { UserName = "jack" });

6

7 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

8e27c5d6adf07c29e2c24b9a6c563012.png

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

3.update操作

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

5502ad99f668006d325616a1f7c0a2ac.png

4. delete操作

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

aa2dfacb5596b3f0c0b959b2a04c1be0.png

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

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

e1c1d75f2cb20612b5e1745a12ea92a7.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值