[ASP.NET]91之ASP.NET由淺入深 不負責講座 Day30 – ORM introduction
前言
前面29天,大致上已經把.Net 2.0 Webform的基礎與一些概念都介紹完了。
接下來的模組其實都比較獨立出來,今天要講的是O/R mapping的簡介。ORM可以寫成一整書也不嫌少,所以我這邊只先蜻蜓點水的點出一點概念。
Issues
定義      
Object Relational Mapping,物件與關連式資料庫對應技術
簡單的說     
1. 將原本資料庫中的資料表(可能是根據幾個資料表的關係,組成的某個資料集合)對應為一個物件集合,將資料列對應為一個物件,將欄位對應成物件的一個屬性。      
2. 讀取關連式資料庫資料出來後,經過ORM,就可以透過物件的方式去使用該資料集合。       
3. 也可透過物件的方式,定義物件的行為,而來對關連式資料庫進行CRUD。 
目的      
Developer面對的是物件,而不是一堆資料表、資料列。物件、類別的定義,可以回頭想想,類別是抽象的集合。有屬性、有行為,有OO的特性,絕對比攤開看不出關係的dataset好懂,reuse也會比較高,也會比較穩定跟抽象。      
Domain model mapping,可以根據domain model設計出更穩定的系統。
透過ORM定義的語法,比起SQL來說,程式的可維護性更高     
1. 可攜性       
2. 會透過ORM framework,可以把注意力focus在物件的操作與使用,而不用因為不同的DBMS就寫不同套的方法做一樣的事。       
3. 比較正式的ORM framework會將自己定義的語法,根據不同的DBMS轉成對應可執行的SQL statement。 
注意      
Performance問題:開發效率提升,但執行效率容易有隱憂。轉換SQL對應的問題,通常結果不會錯,但效率可能會很差。所以要去瞭解最後轉出來的SQL statement有沒問題。
迷思      
學會ORM就不需要學SQL了?學jQuery也得懂JavaScript本身的特性、意義跟用法。ORM只是關連性資料庫與物件中間的橋樑,而SQL才是資料庫的語言,ORM只是協助轉換。所以SQL的觀念、基本語法還是都要具備,用起ORM才能得心應手,才能用的更正確、更精準。
比較常見的ORM framework
- NHibernate
 - LINQ to SQL
 - ADO.NET Entity framework: 通常使用LINQ to Entity Framewor
 
Reference
blog 與課程更新內容,請前往新站位置:http://tdd.best/
