PetaPoco入門(一)


1. ORM概括

1.1. ORM簡介

ORM 對象-關系映射(Object/Relation Mapping,簡稱ORM),是隨着面向對象的軟件開發方法發展而產生的。面向對象的開發方法是當今企業級應用開發環境中的主流開發方法,關系數據庫是企業級應用環境中永久存放數據的主流數據存儲系統。對象和關系數據是業務實體的兩種表現形式,業務實體在內存中表現為對象,在數據庫中表現為關系數據。內存中的對象之間存在關聯和繼承關系,而在數據庫中,關系數據無法直接表達多對多關聯和繼承關系。因此,對象-關系映射(ORM)系統一般以中間件的形式存在,主要實現程序對象到關系數據庫數據的映射。

面向對象是從軟件工程基本原則(如耦合、聚合、封裝)的基礎上發展起來的,而關系數據庫則是從數學理論發展而來的,兩套理論存在顯著的區別。為了解決這個不匹配的現象,對象關系映射技術應運而生。

讓我們從O/R開始。字母O起源於"對象"(Object),而R則來自於"關系"(Relational)。幾乎所有的程序里面,都存在對象和關系數據庫。在業務邏輯層和用戶界面層中,我們是面向對象的。當對象信息發生變化的時候,我們需要把對象的信息保存在關系數據庫中。

如果打開你最近的程序(如,PetShop4.0),看看DAL(數據庫訪問層)代碼,你肯定會看到很多近似的通用的模式。我們以保存對象的方法為例,你傳入一個對象,為SqlCommand對象添加SqlParameter,把所有屬性和對象對應,設置SqlCommand的CommandText屬性為存儲過程,然后運行SqlCommand。對於每個對象都要重復的寫這些代碼。除此之外,還有更好的辦法嗎?有,引入一個O/R Mapping。實質上,一個O/R Mapping會為你生成DAL。與其自己寫DAL代碼,不如用O/R Mapping。你用O/R Mapping保存,刪除,讀取對象,O/R Mapping負責生成SQL,你只需要關心對象就好。

1.2. Petapoco簡介

PetaPoco是一個微小的,快速的,單個文件的微型ORM,可以運行在.NET和Mono平台上。對象/關系數據庫映射(object/relational mapping,ORM)這個術語表示一種技術,用來把對象模型表示的對象映射到基於SQL的關系模型數據結構中去。

PetaPoco是一款適用於.NET應用程序的輕型對象關系映射器(ORM, Object Relational Mapper)。與那些功能完備的ORM(如NHibernate或Entity Framework)不同的是,PetaPoco更注重易用性和性能,而非豐富的功能。使用PetaPoco只需要引入一個C#文件,可以使用強類型的 POCO(Plain Old CLR Object),並支持使用T4模板生成的類等等。

在今日的企業環境中,把面向對象的軟件和關系數據庫一起使用可能是相當麻煩和浪費時間的。而PetaPoco不僅僅管理.NET類到數據庫表的映射(包括.NET 數據類型到SQL數據類型的映射),還提供數據查詢和獲取數據的方法,可以大幅度減少開發時人工使用SQL和ADO.NET處理數據的時間。

PetaPoco的目標主要是用於與數據持久化相關的編程任務,能夠使開發人員從原來枯燥的SQL語句的編寫中解放出來,解放出來的精力可以讓開發人員投入到業務邏輯的實現上。對於以數據為中心的程序,開發人員往往是在數據庫中使用存儲過程來實現商業邏輯,這種情況下PetaPoco可能不是最好的解決方案,但對於那些基於.NET,並且能夠實現OO業務模型和商業邏輯的中間層應用,PetaPoco是最有用的。PetaPoco可以幫助用戶消除或者包裝那些針對特定廠商的SQL代碼,並且幫用戶把結果集從表格式的表示形式轉換成一系列的對象。

PetaPoco功能包括:

1) 可與SQL Server、SQL Server CE、MySQL、PostgreSQL以及Oracle數據庫協同工作。

2) 包含針對Insert/Delete/Update/Save以及IsNew的多個輔助方法。

3) 支持簡單事務

4) 對於翻頁請求會自動計算總記錄數,並獲取特定分頁。

5) 支持參數替換,能夠從對象屬性中抓取命名參數(named parameters)

6) 包括一個消耗資源很少的SQL Builder類

7) 部分記錄更新

8) 包括T4 Templates,可以用於基於數據庫結構生成POCO類。

在性能方面,PetaPoco僅次於Dapper,速度只稍遜於手工編碼的數據訪問層(DAL, Data Access Layer)。此外,由於PetaPoco是開源項目,因此添加條件來處理如空間數據等特定情況會很容易。

最近,隨着許多開源項目的發布,微型ORM已開始成為一種流行趨勢。其他一些眾所周知的適用於.NET的項目有Dapper和Massive。那些微型ORM相對於功能完備的ORM而言,會更簡單、更高效,微型ORM通常要求開發人員手動編寫SQL語句,而非完全動態生成。它們同樣不需要冗長的映射文件,因為對於維護和調試而言,那些映射文件只會讓過程變得單調乏味。

1.3. 獲取Petapoco

1) •NuGet - http://nuget.org/List/Packages/PetaPoco

2) •GitHub - https://github.com/toptensoftware/petapoco


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM