Dapper的牛逼就不扯蛋了,答應群友做個入門Demo的,現有園友需要,那麼公開分享一下:
平台之大勢何人能擋? 帶着你的Net飛奔吧! <a href="http://www.cnblogs.com/dunitian/p/4822808.html#skill" target="_blank">http://www.cnblogs.com/dunitian/p/4822808.html#skill</a>
先安裝一下Dapper(建議用nuget包來管理)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL3cDN1gDO3gzMtUTN5kDNwEDOwkjMyAjNxAjMtgzN5gTN28CXyAjNxAjMvwFO3kDO1YzLcd2bsJ2Lc12bj5ycn9Gbi52YuUTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
連接配接字元串:
string connStr = "Data Source=.;Initial Catalog=DapperDB;User ID=使用者名;Password=密碼";
強類型:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<code>#region 強類型</code>
<code> </code><code>//public static IEnumerable<T> Query<T>(this IDbConnection cnn, string sql, object param = null, SqlTransaction transaction = null, bool buffered = true)</code>
<code> </code><code>using</code> <code>(SqlConnection conn = </code><code>new</code> <code>SqlConnection(connStr))</code>
<code> </code><code>{</code>
<code> </code><code>conn.Open();</code>
<code> </code><code>//無參查詢</code>
<code> </code><code>//var qqModeList = conn.Query<QQModel>("select Id,Name,Count from QQModel");</code>
<code> </code><code>//帶參查詢</code>
<code> </code><code>var</code> <code>qqModeList = conn.Query<QQModel>(</code><code>"select Id,Name,Count from QQModel where Id in @id and Count>@count"</code><code>, </code><code>new</code> <code>{ id = </code><code>new</code> <code>int</code><code>[] { 1, 2, 3, 4, 5, 6 }, count = 1 });</code>
<code> </code><code>foreach</code> <code>(</code><code>var</code> <code>item </code><code>in</code> <code>qqModeList)</code>
<code> </code><code>{</code>
<code> </code><code>Console.WriteLine(item.Id + </code><code>" "</code> <code>+ item.Name + </code><code>" "</code> <code>+ item.Count);</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>#endregion</code>
動态類型:
<code>#region 動态類型</code>
<code> </code><code>////逆天動态類型用的比較多[可能是MVC ViewBag用多了]</code>
<code> </code><code>//public static IEnumerable<dynamic> Query (this IDbConnection cnn, string sql, object param = null, SqlTransaction transaction = null, bool buffered = true)</code>
<code> </code><code>var</code> <code>qqModeList = conn.Query(</code><code>"select Id,Name,Count from QQModel"</code><code>).ToList();</code>
多映射:
<code>using</code> <code>(SqlConnection conn = </code><code>new</code> <code>SqlConnection(connStr))</code>
<code>{</code>
<code> </code><code>string</code> <code>sqlStr = </code><code>@"select A.Id,A.Title,S.SeoKeywords from Article A</code>
<code> </code><code>inner join SeoTKD S on A.SeoId=S.Id</code>
<code> </code><code>where A.Id in @ids"</code><code>;</code>
<code> </code><code>conn.Open();</code>
<code> </code><code>var</code> <code>articleList = conn.Query(sqlStr, </code><code>new</code> <code>{ ids = </code><code>new</code> <code>int</code><code>[] { 41, 42, 43, 44, 45, 46, 47, 48 } });</code>
<code> </code><code>foreach</code> <code>(</code><code>var</code> <code>item </code><code>in</code> <code>articleList)</code>
<code> </code><code>{</code>
<code> </code><code>Console.WriteLine(item.Id + </code><code>" | "</code> <code>+ item.SeoKeywords + </code><code>" | :"</code> <code>+ item.Title);</code>
<code> </code><code>}</code>
<code>}</code>
多傳回值:
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<code> </code><code>string</code> <code>sqlStr = </code><code>@"select Id,Title,Author from Article where Id = @id</code>
<code> </code><code>select * from QQModel where Name = @name</code>
<code> </code><code>select * from SeoTKD where Status = @status"</code><code>;</code>
<code> </code><code>using</code> <code>(</code><code>var</code> <code>multi = conn.QueryMultiple(sqlStr, </code><code>new</code> <code>{ id = 11, name = </code><code>"打代碼"</code><code>, status = 99 }))</code>
<code> </code><code>//multi.IsConsumed reader的狀态 ,true 是已經釋放</code>
<code> </code><code>if</code> <code>(!multi.IsConsumed)</code>
<code> </code><code>{</code>
<code> </code><code>//注意一個東西,Read擷取的時候必須是按照上面傳回表的順序 (article,qqmodel,seotkd)</code>
<code> </code><code>//強類型</code>
<code> </code><code>var</code> <code>articleList = multi.Read<Temp>();</code><code>//類不見得一定得和表名相同</code>
<code> </code><code>var</code> <code>QQModelList = multi.Read<QQModel>();</code>
<code> </code><code>var</code> <code>SeoTKDList = multi.Read<SeoTKD>();</code>
<code> </code><code>//動态類型</code>
<code> </code><code>//var articleList = multi.Read();</code>
<code> </code><code>//var QQModelList = multi.Read();</code>
<code> </code><code>//var SeoTKDList = multi.Read();</code>
<code> </code><code>#region 輸出</code>
<code> </code><code>foreach</code> <code>(</code><code>var</code> <code>item </code><code>in</code> <code>QQModelList)</code>
<code> </code><code>Console.WriteLine(item.Id + </code><code>" "</code> <code>+ item.Name + </code><code>" "</code> <code>+ item.Count);</code>
<code> </code><code>foreach</code> <code>(</code><code>var</code> <code>item </code><code>in</code> <code>SeoTKDList)</code>
<code> </code><code>Console.WriteLine(item.Id + </code><code>" | "</code> <code>+ item.SeoKeywords);</code>
<code> </code><code>foreach</code> <code>(</code><code>var</code> <code>item </code><code>in</code> <code>articleList)</code>
<code> </code><code>Console.WriteLine(item.Author);</code>
<code> </code><code>}</code>
增删改查:(删項目裡面基本上不用)
<code> </code><code>//增</code>
<code> </code><code>int</code> <code>count = conn.Execute(</code><code>"insert into Article values(@title,@content,@author,961,1,2,2,N'2015-11-23 11:06:36.553',N'2015-11-23 11:06:36.553',N'5,103,113',91,N'3,5,11',0,N'/Images/article/16.jpg')"</code><code>, </code><code>new</code> <code>{ title = </code><code>"Title1"</code><code>, content = </code><code>"TContent1"</code><code>, author = </code><code>"毒逆天"</code> <code>});</code>
<code> </code><code>//改</code>
<code> </code><code>//int count = conn.Execute("update Article set Title=@title where Id=@id", new { title = "麼麼哒", id = 274 });</code>
<code> </code><code>if</code> <code>(count > 0)</code>
<code> </code><code>Console.WriteLine(count + </code><code>"條操作成功"</code><code>);</code>
存儲過程:
<code>//查詢</code>
<code> </code><code>//參數名得和存儲過程的變量名相同(參數可以跳躍傳,鍵值對方式即可)</code>
<code> </code><code>//動态類型</code>
<code> </code><code>//var list = conn.Query("usp_test", new { aId = 11 }, commandType: CommandType.StoredProcedure);</code>
<code> </code><code>//強類型</code>
<code> </code><code>var</code> <code>list = conn.Query<TitleAndKeyWords>(</code><code>"usp_test"</code><code>, </code><code>new</code> <code>{ aId = 11 }, commandType: CommandType.StoredProcedure);</code>
<code> </code><code>foreach</code> <code>(</code><code>var</code> <code>item </code><code>in</code> <code>list)</code>
<code>//插入</code>
<code> </code><code>int</code> <code>count = conn.Execute(</code><code>"usp_insertArticle"</code><code>, </code><code>new</code> <code>{ title = </code><code>"Title11"</code><code>, content = </code><code>"TContent1"</code><code>, author = </code><code>"毒逆天"</code> <code>}, commandType: CommandType.StoredProcedure);</code>
<code>//更新</code>
<code> </code><code>int</code> <code>count = conn.Execute(</code><code>"usp_updateArticle"</code><code>, </code><code>new</code> <code>{ id = 276, title = </code><code>"Dapper使用"</code> <code>}, commandType: CommandType.StoredProcedure);</code>
事物的使用:
先看看ADO.Net怎麼用的
再看看Dapper的
本文轉自毒逆天部落格園部落格,原文連結:http://www.cnblogs.com/dunitian/p/5226265.html,如需轉載請自行聯系原作者