天天看點

.net ORM

ORM(Object Relational Mapping)是對象關系映射。它的實質就是将關系資料(庫)中的業務資料用對象的形式表示出來,并通過面向對象(Object-Oriented)的方式将這些對象組織起來,實作系統業務邏輯的過程。在ORM過程中最重要的概念是映射(Mapping),通過這種映射可以使業務對象與資料庫分離。從面向對象來說,資料庫不應該和業務邏輯綁定到一起,ORM則起到這樣的分離作用,使資料庫層透明,開發人員真正的面向對象 。

ORM是随着面向對象的軟體開發方法發展而産生的。面向對象的開發方法是當今企業級應用開發環境中的主流開發方法,關系資料庫是企業級應用環境中永久存放資料的主流資料存儲系統。對象和關系資料是業務實體的兩種表現形式,業務實體在記憶體中表現為對象,在資料庫中表現為關系資料。記憶體中的對象之間存在關聯和繼承關系,而在資料庫中,關系資料無法直接表達多對多關聯和繼承關系。是以,對象-關系映射(ORM)系統一般以中間件的形式存在,主要實作程式對象到關系資料庫資料的映射。

一般的ORM包括以下四部分:

一個對持久類對象進行CRUD操作的API;

一個語言或API用來規定與類和類屬性相關的查詢;

一個規定mapping metadata的工具;

一種技術可以讓ORM的實作同僚務對象一起進行dirty checking, lazy association fetching以及其他的優化操作。

ORM 産品有很多,下面是比較流行的.NET ORM 産品

1.DLinQ

DLinq:.NET Language Integrated Query for Relational Data,DLinq和XLinq(for Xml)共同組成了.net 3.0的關鍵部分——LinQ(Language Integrated Query ),即語言級內建查詢能力。

DLinq是在分析了ObjectSpaces的回報之後重新設計的ORM Solutions,作為更先進的查詢資料庫得到對象并且持久化對象的方式,DLinq将不再使用ObjectSpaces的mapping檔案方式,而是使用了attribute 來進行mapping的定義。當然現在也有一些采用attribute 方式的Solutions,如XPO:http://www.devexpress.com/Products/NET/XPO/。不過DLinq的第一大特點将是任何ORM方案難以匹敵的,那就是語言級别的查詢內建。這是目前ORM陣營(無論是.net、java或者其他)中都難以做到的。

2. NHibernate  開源

3.Grove    免費.對VS2003,VS2005都有Toolkit支援,保持着更新進度,适當關注)

4. ActiveRecord

是Castle中的一個子項目,現在的版本是RC1。它同樣是一個非常優秀的持久層架構,在底層封裝了NHibernate,改用Attribute來代替配置檔案,這樣就不用再像NHibernate那樣去編寫複雜的配置檔案。

5.iBATIS.NET分為DataMapper和DataAccess兩部分,應該說DataMapper是這個架構的核心,DataMapper使用XML檔案來實作從實體到SQL statements的映射,學習起來非常簡單,是用DataMapper後,我們可以自由的使用SQL語句或者存儲過程。

DataAccess允許我們通過一個簡單的接口來操作資料,而不必了解底層實作的細節

6.DAAB是微軟Enterprise Library中的一個應用程式塊,能夠幫助我們實作通用的資料通路.

有人曾經總結過很多:

.NET Persistence

BBADataObjects

DataObjects.NET

Data Tier Modeler for .NET

DotNorm

Eldorado.NET

Enterprise Core Objects (ECO?)

Entity Broker

eXpress Persistent Objects for .NET

FastObjects.NET

JC Persistent Framework

LLBLGen Pro

ModelWorks

Nhibernate

Nolics.NET

Norm

Norpheme

ObjectBroker

ObjectSpaces

ObjectSpark

Objectz.NET

OJB.NET

OPF.Net (Object Persistent Framework)

ORM.NET

Pragmatier Data Tier Builder

RapTier

Sisyphus Persistence Framework

TierDeveloper

Bob.NET

ObjectPersistor.NET

Genome