推薦一個Dapper擴充套件CRUD基本操作的開源庫

chingho發表於2023-02-25

在C#眾多ORM框架中,Dapper絕對稱得上微型ORM之王,Dapper以靈活、效能好而著名,同樣也是支援各種資料庫,但是對於一些複雜的查詢,我們寫原生的SQL語句問題不大,對於CRUD基本操作,我們同樣也是需要寫原生的SQL來實現,這個就比較麻煩了。

今天給大家推薦一個Dapper擴充套件庫,來實現CRUD的基本操作,可以省去這些繁瑣的程式碼,提升開發效率。

專案簡介

這個是Dapper小型擴充套件庫,透過為POCO新增基本CRUD操作,來擴充套件Dapper。對於複雜的查詢場景,也增加了擴充套件。

技術架構

1、支援:支援Net 4.6+、NetStandard 2.0、NetCore 2.0+。

專案特性

1、開箱即用,使用簡單;

2、為實體自動對映獲取、插入、更新和刪除操作;

3、支援GetList、Count、GetPage方法;

4、支援GUID、Int型別主鍵,其他型別可透過自定義的方式實現;

5、透過ClassMapper實現自定義對映。

專案結構

圖片

使用方法

插入資料

//定義實體
Person p = new Person { Active = true, FirstName = "Foo", LastName = "Bar", DateCreated = DateTime.UtcNow };
//插入並返回id
var id = Db.Insert(p);
Assert.AreEqual(1, id);

獲取單個實體

//根據id,獲取實體
Person p2 = Db.Get<Person>(id);
Assert.AreEqual(id, p2.Id);

刪除記錄

//根據id,刪除記錄
Person p2 = Db.Get<Person>(id);Db.Delete(p2);
Assert.IsNull(Db.Get<Person>(id));

更新記錄

//根據id,獲取記錄
var p2 = Db.Get<Person>(id);
//更改記錄
p2.FirstName = "Baz";p2.Active = false;
//更新記錄
Db.Update(p2);

獲取記錄列表

//獲取所有記錄
IEnumerable<Person> list = Db.GetList<Person>();
Assert.AreEqual(4, list.Count());

根據自動排序、獲取指定的記錄

//排序欄位
IList<ISort> sort = new List<ISort>  {    Predicates.Sort<Person>(p => p.LastName),    Predicates.Sort<Person>("FirstName")  };
//獲取指定的記錄
IEnumerable<Person> list = Db.GetPage<Person>(null, sort, 0, 2);
Assert.AreEqual(2, list.Count());

獲取過濾條件的記錄總數

//欄位過濾
var predicate = Predicates.Field<Person>(f => f.DateCreated, Operator.Lt, DateTime.UtcNow.AddDays(-5));
//獲取總數
int count = Db.Count<Person>(predicate);
Assert.AreEqual(2, count);

專案地址

https://github.com/tmsmith/Dapper-Extensions

更多開源專案請檢視一個專注推薦優秀.Net開源專案的榜單

- End -

文章首發於公眾號【程式設計樂趣】,歡迎大家關注。
圖片

相關文章