天天看點

Dapper逆天入門~強類型,動态類型,多映射,多傳回值,增删改查+存儲過程+事物案例示範

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包來管理)

Dapper逆天入門~強類型,動态類型,多映射,多傳回值,增删改查+存儲過程+事物案例示範
Dapper逆天入門~強類型,動态類型,多映射,多傳回值,增删改查+存儲過程+事物案例示範

連接配接字元串:

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&lt;T&gt; Query&lt;T&gt;(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&lt;QQModel&gt;("select Id,Name,Count from QQModel");</code>

<code>                </code><code>//帶參查詢</code>

<code>                </code><code>var</code> <code>qqModeList = conn.Query&lt;QQModel&gt;(</code><code>"select Id,Name,Count from QQModel where Id in @id and Count&gt;@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&lt;dynamic&gt; 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&lt;Temp&gt;();</code><code>//類不見得一定得和表名相同</code>

<code>            </code><code>var</code> <code>QQModelList = multi.Read&lt;QQModel&gt;();</code>

<code>            </code><code>var</code> <code>SeoTKDList = multi.Read&lt;SeoTKD&gt;();</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 &gt; 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&lt;TitleAndKeyWords&gt;(</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逆天入門~強類型,動态類型,多映射,多傳回值,增删改查+存儲過程+事物案例示範
Dapper逆天入門~強類型,動态類型,多映射,多傳回值,增删改查+存儲過程+事物案例示範

再看看Dapper的

Dapper逆天入門~強類型,動态類型,多映射,多傳回值,增删改查+存儲過程+事物案例示範
Dapper逆天入門~強類型,動态類型,多映射,多傳回值,增删改查+存儲過程+事物案例示範

本文轉自毒逆天部落格園部落格,原文連結:http://www.cnblogs.com/dunitian/p/5226265.html,如需轉載請自行聯系原作者