前言 本教程介紹了作者自行設計和開發的XDesigner.ORM應用程式架構,預計的讀者是C#的中級或者進階開發人員。 C#初級和中級開發人員可以從中學習到如何在C#應用程式開發中使用XDesigner.ORM架構來方便快捷的實現關係型資料庫和應用程式資料對象之間的來回映射處理。 C#進階開發人員可以從中學習如何在C#中使用反射、動態編譯、文件物件模型等較為進階的編程技巧。點擊
下載XDesigner.ORM C#原始碼。
ORM概述 ORM是英文Object/Relation Mapping的簡寫,翻譯成中文就是對象-關聯式資料庫映射。是一種為瞭解決物件導向編程思想和關聯式資料庫技術存在的不匹配的問題的技術思想。 在資料庫界,主流的資料庫都是關係型資料庫,其採用的關係型資料結構模型,無論從數學理論上還是實踐中都相當的成熟,因此得到非常廣泛的應用。在關係型資料結構理論中,所有的資料都組織成一個個相互獨立的二維表格,一個資料表有若干行若干列。因此關係型資料庫適合儲存大量的結構簡單的資料,不適合儲存複雜的資料結構。 在業界,物件導向的編程思想及其派生思想佔據主流。物件導向的編程思想具有封裝,繼承,重載等手段來方便的實現比較複雜的資料結構,這適應了現代資訊系統包含大量複雜資料結構的特點,其應用廣泛深入。關係型資料模型和物件導向的編程思想之間存在比較大的差別,資料在兩者之間的交換是不大通暢的,就像南京,江北和主城區之間是長江來阻斷交通。因此開發人員迫切需要破解這種資料交通的阻斷。 以前程式員需要手工編程,從資料庫中讀取一個個欄位值並賦值到編程對象的一個個欄位或屬性上,這就像在長江上架一個獨木橋,開發效率低下,維護困難。後來出現一種叫ORM的架構性的軟體,它能根據某些配置資訊將資料庫中的欄位和編程對象的欄位或屬性之間建立映射關係,從而能方便的從資料庫讀取欄位值並賦值到對象屬性中。這是一種半自動的機制,能比較大的提高開發效率,簡化維護,這就像在長江上架設了一座高速公路大橋。 從本質上說,關係型資料庫和物件導向的編程思想之間的隔閡非常大,就像長江是天澗,即使建五六座大橋也不夠用。徹底的解決方案就是拋棄關係型資料庫而使用物件導向的資料庫,不過這個過程就像南京江北整體搬遷到江南一樣,工程浩大,時間漫長。在等待物件導向資料庫的統治前,各位仍然得忍受關係型資料庫和物件導向編程思想之間的資料交通不暢的痛苦,並使用ORM架構來很有限的降低這種痛苦。從這個角度上說,開發人員痛恨關係型資料庫,就像搞運載火箭的人痛恨地球引力一樣。 在目前的軟體開發中,Hibernate是用的比較多的ORM技術,它是一個JAVA的開放原始碼的對象關係映射架構,它對JDBC進行了輕量級的對象封裝,是的JAVA程式員可以使用對象編程思想來操作資料庫。而有人將Hibernate改造成基於.NET架構的,形成了NHibernate,能用於.NET開發。
XDesigner.ORM概述 XDesigner.ORM(簡稱XORM)是一個基於微軟.NET平台的開源ORM架構程式。主要特點有1. 輕量級。XORM是輕量級的架構,所有功能組件只包含在兩個.NET程式集中,引用和部署非常方便,沒有使用任何第三方組件。2. 使用簡單。沒有複雜的XML映射設定檔。只需要在實體物件的原始碼中附加相關的特性,附加這些特性並不影響程式的運行;實體物件類型的代碼編寫比較自由,限制條件少。3. 支援對象關係映射。XORM能處理實體物件類型之間的主從關係,能自動載入主對象的子物件列表。4. 支援動態載入。XORM能動態載入實體物件的資料量很大的欄位值以及子物件列表。只有應用程式調用這些資料時才動態載入,而且這個過程對應用程式來說是透明的。5. 高效能。XORM架構使用動態編譯技術來提高效能,使得它能以比較快的速度來處理ORM映射關係。 XORM架構的架構如所示
XORM的內部架構以後詳細說明。 XORM架構還在快速發展中,未來將要實現的功能有1. XML映射設定檔。未來將同時支援XML映射設定檔和實體類型附加特性兩種方式來描述ORM映射關係,使得XORM架構應用更加的靈活。