在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);
專案地址
更多開源專案請檢視:一個專注推薦優秀.Net開源專案的榜單
- End -
文章首發於公眾號【程式設計樂趣】,歡迎大家關注。