日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Dapper的基本使用

發布時間:2023/12/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dapper的基本使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Dapper是.NET下一個micro的ORM,它和Entity Framework或Nhibnate不同,屬于輕量級的,并且是半自動的。也就是說實體類都要自己寫。它沒有復雜的配置文件,一個單文件就可以了。給出官方地址。

http://code.google.com/p/dapper-dot-net/

個人覺得他非常好用,現在已經取代了原來的SqlHelper。優點:

  • 使用Dapper可以自動進行對象映射!
  • 輕量級,單文件。
  • 支持多數據庫。
  • Dapper原理通過Emit反射IDataReader的序列隊列,來快速的得到和產生對象。
  • 網上還有對Dapper的擴展類,這里就不贅述了。下面只講下簡單的增刪改查、數據庫表間的對應關系和事務的應用。

    先給出實體類的關系:

    ?書和書評是1---n的關系。(沿用Entity Framework的實體類,virtual表示延遲加載,此處忽略)

    //書 public class Book{public Book(){Reviews = new List<BookReview>();}public int Id { get; set; }public string Name { get; set; }public virtual List<BookReview> Reviews { get; set; }public override string ToString(){return string.Format("[{0}]------《{1}》", Id, Name);}}//書評public class BookReview{public int Id { get; set; }public int BookId { get; set; }public virtual string Content { get; set; }public virtual Book AssoicationWithBook { get; set; }public override string ToString(){return string.Format("{0})--[{1}]\t\"{3}\"", Id, BookId, Content);}}
    • 基本的增刪改查操作

      由于Dapper ORM的操作實際上是對IDbConnection類的擴展,所有的方法都是該類的擴展方法。所以在使用前先實例化一個IDBConnection對象。

    IDbConnection conn = new SqlConnection(connString);

    Insert

    Book book = new Book();book.Name="C#本質論";string query = "INSERT INTO Book(Name)VALUES(@name)"; //對對象進行操作conn.Execute(query, book); //直接賦值操作conn.Execute(query, new {name = "C#本質論"});

    update

    string query = "UPDATE Book SET Name=@name WHERE id =@id";conn.Execute(query, book);

    delete

    string query = "DELETE FROM Book WHERE id = @id"; conn.Execute(query, book); conn.Execute(query, new { id = id });

    query

    string query = "SELECT * FROM Book"; //無參數查詢,返回列表,帶參數查詢和之前的參數賦值法相同。conn.Query<Book>(query).ToList();//返回單條信息string query = "SELECT * FROM Book WHERE id = @id";book = conn.Query<Book>(query, new { id = id }).SingleOrDefault();
    • 數據庫表對應關系操作
    //查詢圖書時,同時查找對應的書評,并存在List中。實現1--n的查詢操作 string query = "SELECT * FROM Book b LEFT JOIN BookReview br ON br.BookId = b.Id WHERE b.id = @id"; Book lookup = null; //Query<TFirst, TSecond, TReturn>var b = conn.Query<Book, BookReview, Book>(query,(book, bookReview) =>{//掃描第一條記錄,判斷非空和非重復if (lookup == null || lookup.Id != book.Id)lookup = book;//書對應的書評非空,加入當前書的書評List中,最后把重復的書去掉。if (bookReview != null)lookup.Reviews.Add(bookReview);return lookup;}, new { id = id }).Distinct().SingleOrDefault(); return b; //1--1操作 BookReview br; string query = "SELECT * FROM BookReview WHERE id = @id"; using (conn) {br = conn.Query<BookReview, Book, BookReview>(query,(bookReview, book) =>{bookReview.AssoicationWithBook = book;return bookReview;}, new { id = id }).SingleOrDefault();return br; }
    • 事務操作
    using (conn) { //開始事務 IDbTransaction transaction = conn.BeginTransaction();try{string query = "DELETE FROM Book WHERE id = @id";string query2 = "DELETE FROM BookReview WHERE BookId = @BookId";conn.Execute(query2, new { BookId = id }, transaction, null, null);conn.Execute(query, new { id = id }, transaction, null, null);//提交事務transaction.Commit();}catch (Exception ex){//出現異常,事務Rollbacktransaction.Rollback();throw new Exception(ex.Message);} }

    后續文章

  • 《利用Dapper ORM搭建三層架構》
  • 《Stackoverflow/dapper的Dapper-Extensions用法(一)》

  • 由于自己的畢設也是用它來寫的,所以放出來,可以作為一個實例來參考一下。

    sql server2012 + dapper + asp.net mvc4 + easyUI的藥庫管理系統,有興趣的可以star一下哦~

    轉載于:https://www.cnblogs.com/webenh/p/7837777.html

    總結

    以上是生活随笔為你收集整理的Dapper的基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。