麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

輕量級(jí)ORM框架——第一篇:Dapper快速學(xué)習(xí)

2019-11-11 05:02:54
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

輕量級(jí)ORM框架——第一篇:Dapper快速學(xué)習(xí)

  我們都知道ORM全稱(chēng)叫做Object Relationship Mapper,也就是可以用object來(lái)map我們的db,而且市面上的orm框架有很多,其中有一個(gè)框架

叫做dapper,而且被稱(chēng)為the king of ORM。

 

一:為什么選擇Dapper

1. 性能優(yōu)越:

    其實(shí)在各大網(wǎng)站上,我們大概都會(huì)看到這樣的一個(gè)對(duì)比效果圖,在超過(guò)500次poco serialization的過(guò)程中所表現(xiàn)的性能,我們發(fā)現(xiàn)dapper是第二名,

當(dāng)然第一名誰(shuí)也無(wú)法超越,越底層的當(dāng)然久越快,同時(shí)也就越麻煩。就好像誰(shuí)能超過(guò)“01代碼”呢???

 

2. 支持多數(shù)據(jù)庫(kù)

      支持多數(shù)據(jù)庫(kù)的本質(zhì)是因?yàn)镈apper是對(duì)IDBConnection接口進(jìn)行了方法擴(kuò)展,比如你看到的SqlMapper.cs,一旦你這樣做了,我們也知道,

SqlConnection,MySQLConnection,OracleConnection都是繼承于DBConnection,而DBConnection又是實(shí)現(xiàn)了IDBConnection的接口,對(duì)吧。。。

 

二:安裝Dapper

    install dapper的方式通常有兩種:

 

1. 通過(guò)nuget進(jìn)行安裝

   如果你不知道怎么用nuget進(jìn)行安裝,或者不知道install-package是什么,可以在browser上找一下,比如下面這樣:

 

然后我們copy到package console 試試看。

 

 

2. 在github上獲取源碼

   為什么要獲取源碼,是因?yàn)橛胕lspy調(diào)試dapper的源碼太費(fèi)勁了,畢竟現(xiàn)在都是異步編程了,從ilspy中看都是匿名方法很多都無(wú)法滲透,廢話(huà)不多

說(shuō),我們只要把Dapper文件夾拉出來(lái)然后copy到我們的solution就可以了,如下圖:

 

三:快速CURD操作

   其實(shí)對(duì)數(shù)據(jù)庫(kù)的操作莫過(guò)于CURD,在進(jìn)行操作之前我們?cè)倥湟粋€(gè)Users表。

 

1. 配置Users表

復(fù)制代碼
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]復(fù)制代碼

 

2. Insert操作

  通常來(lái)說(shuō),有兩種insert操作:

<1>單條insert操作

  這是一個(gè)簡(jiǎn)單的參數(shù)化insert,而且還可以塞入匿名類(lèi)型,對(duì)吧,跟原始的SqlParameter相比,是不是簡(jiǎn)單的多???

復(fù)制代碼
     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 = "上海" });        }復(fù)制代碼

 

<2> InsertBulk操作

     既然是Bulk操作,那肯定就是批量插入了,我們要做的就是將上面這個(gè) ”匿名對(duì)象" 變成 ”匿名對(duì)象集合“ 就可以了。。。為了方便操作,這里定義

一個(gè)Users類(lèi),比如下面這樣。。。

復(fù)制代碼
    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 = "[email protected]", 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);        }復(fù)制代碼

 

2. Query操作

   其實(shí)在Dapper在query上提供的的文章太多了。。。這篇我們就按照最簡(jiǎn)單的參數(shù)化查詢(xún)就好了。。。比如我要找到username=jack的記錄,如下:

復(fù)制代碼
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         }復(fù)制代碼

 

圖上的亮點(diǎn)就在于能夠自動(dòng)化mapper到我們object上面來(lái),這是我們DataReader所不能辦到的,對(duì)吧~~

 

3.update操作

  這種操作方式,我們還是使用Execute方法來(lái)實(shí)現(xiàn),和insert是一種套路的哦。

  

 

4. delete操作

    這里我還是采用參數(shù)化的形式來(lái)刪除UserID=10這條記錄,方式如下:

 

最終sql的table展示如下,可以看到已經(jīng)正確的修改了UserID=11的記錄,刪除了UserID=10的record。。。。當(dāng)然Dapper好玩的地方多著呢,

這篇只是一個(gè)入門(mén)而已。。。希望本篇對(duì)大家有幫助~~~

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


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产盼盼私拍福利视频99 | xxxx18韩国护士hd老师 | 久在线观看福利视频69 | 久久久免费电影 | 国产精品成人久久 | 日本高清黄色片 | 做爰xxxⅹ性护士hd在线 | 亚洲网站免费 | 成人视屏在线观看 | 欧美日韩在线看片 | 欧美a在线观看 | 92看片淫黄大片一级 | 久久国产精品久久久久久久久久 | 一级做受大片免费视频 | 91看片成人 | av在线免费看网站 | 中国老女人一级毛片视频 | 午夜在线观看视频网站 | 在线亚洲免费视频 | 欧美日韩一 | 精品亚洲va在线va天堂资源站 | 国产九九热 | xxxx欧美视频| 欧美一级片网站 | 欧美一级特黄aaaaaa在线看首页 | 国产精品一品二区三区四区18 | 亚洲精品a级 | 亚洲成人自拍电影 | 精品国产一区二区三区久久久 | 在线播放免费播放av片 | 18pao国产成人免费视频 | 国产精品久久久久久模特 | 粉嫩粉嫩一区二区三区在线播放 | 黄色大片在线观看 | 一区二区三区日韩电影 | 欧美一级不卡视频 | 久久久成人免费视频 | 一二区成人影院电影网 | 欧美一级美片在线观看免费 | 九九热免费视频在线观看 | 亚洲成人第一页 |