当前位置: 移动技术网 > IT编程>开发语言>.net > 轻量级ORM框架——第一篇:Dapper快速学习

轻量级ORM框架——第一篇:Dapper快速学习

2018年12月03日  | 移动技术网IT编程  | 我要评论

失宠王妃休王爷,左亚琪,家长会上爸爸猝死!年仅33岁

 

一:为什么选择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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网