今天來給大家分享一個好用的輕型的.net框架的ORM——PetaPoco
本着快速上手的原則,我們通過和EF對比,讓大家能快速使用PetaPoco
PetaPoco大家可能沒有聽說過,但大家一定聽說過或者用過EF吧,其實,PetaPoco和EF是一個性質的東西,只不過PetaPoco相對於EF而言較為輕量級的。
與EF一樣,我們可以再NuGet中將其引用安裝進來。
安裝完畢之后,我們可以就可以在解決方案中看到多個文件夾。
注:ExModels這個文件夾是我自己加上的,不是自己生成的。
在EF中,分為好幾種模式,如:代碼優先(Code First),數據庫優先(DataBase First) 等等……在PetaPoco中只有與EF類似的數據庫優先即DataBase First(可能還有其他模式,但筆者沒有深入研究)。
我們來說一下PetaPoco中幾個關鍵的文件
在Generated文件有一個Database.tt的文件,他下面還有個Database.cs的文件,這兩個文件,是PetaPoco'數據庫優先模式'的關鍵文件。本着快速上手的原則,其他文件就不做一一說明了。
下面我們來看一下如何在一個項目中來快速使用PetaPoco。
第一步:在App.config或Web.config 文件中配置數據庫連接字符串。
第二步:配置Database.tt文件。
打開Database.tt文件,給大家說一下幾個比較重要的配置屬性,沒有提到的,可以用他們給的默認值。
上面標注的就是幾個在項目中需要用到的比較重要的配置屬性,還有一些配置屬性沒有做一一的說明,小伙伴們可以自己研究一下,或者去網上查一下資料。
點擊保存(Ctrl+S),則PetaPoco會自動關聯相應的數據庫,給我們生成每個表的表實例,表明即為實例的類名,表字段名即為實例類的屬性名,是不是感覺和EF的DataBase First 很類似啊。
PetaPoco將自動生成的類實例保存到了PetaPoco.cs文件中了。我們可以在這個文件中查看。如果遇到數據庫數據結構發生變化,我們可以在Database.tt中重新點擊保存(Ctrl+S)一下,即可更新了。
PetaPoco配置完了,下面就可以真槍實彈的來用它進行對數據庫的一系列操作了。
根據上面的Database.tt的配置,我們生成的Database.cs文件中,命名空間和類名如下:
下面我用簡單的幾個小例子來給大家介紹一下PetaPoco操作數據庫的一些方法函數。
1、初始化
var db = new AntManManagerDB();
var db = new AntManManagerDB("AntManManager");
上述兩行是常用的初始化Database的代碼,還有很多初始化的重載,大家可以自己看一下。
2、Insert
//message 是PetaPoco根據數據庫表生成的類實例
var db = new AntManManagerDB(); db.Insert(message);
db.Execute("Insert語句");
3、Delete
//message 是PetaPoco根據數據庫表生成的類實例 var db = new AntManManagerDB(); db.Delete(message)
db.Execute("Delete語句");
4、Update
//message 是PetaPoco根據數據庫表生成的類實例
var db = new AntManManagerDB(); db.Update(message)
db.Execute("Update語句");
5、Select
//單條查詢 var a=db.SingleOrDefault<Message>("SELECT * FROM articles WHERE article_id=@0", 123); //分頁查詢,返回Page類實例,其屬性中,有很多你需要的值哦 var result=db.Page<Message>(1, 20, // <-- 第幾頁,每頁幾條 "SELECT * FROM articles WHERE category=@0 ORDER BY date_posted DESC", "coolstuff"); // 查詢所有數據 foreach (var a in db.Query<Message>("SELECT * FROM message")) { Console.WriteLine("{0} - {1}", a.message_id, a.title); } //查詢所有數據 var a=db.Fetch<Message>("SELECT * FROM message")
6、事務
var db = new AntManManagerDB(); db.BeginTransaction(); try { foreach (var message in listMessage) { db.Insert(message); } db.CompleteTransaction(); return true; } catch (Exception e) { db.AbortTransaction(); throw new Exception(e.Message); }
常用的數據庫操作就這些了。
挺好用的,拿出來分享一下。