- NHibernate 教程
- NHibernate - 首頁
- NHibernate - 概述
- NHibernate - 架構
- NHibernate - ORM
- NHibernate - 環境設定
- NHibernate - 快速入門
- NHibernate - 基礎ORM
- NHibernate - 基礎CRUD操作
- NHibernate - 效能分析器
- 為對映檔案新增IntelliSense
- NHibernate - 資料型別對映
- NHibernate - 配置
- NHibernate - 覆蓋配置
- NHibernate - 批處理大小
- NHibernate - 快取
- NHibernate - 元件對映
- NHibernate - 關係對映
- NHibernate - 集合對映
- NHibernate - 級聯操作
- NHibernate - 延遲載入
- NHibernate - 反向關係
- NHibernate - Load/Get 方法
- NHibernate - LINQ
- NHibernate - 查詢語言 (HQL)
- NHibernate - Criteria 查詢
- NHibernate - QueryOver 查詢
- NHibernate - 原生SQL
- NHibernate - Fluent NHibernate
- NHibernate 有用資源
- NHibernate - 快速指南
- NHibernate - 有用資源
- NHibernate - 討論
NHibernate - 概述
本章將討論NHibernate是什麼,它可以在哪些平臺上實現,它的優點以及其他相關方面。
什麼是NHibernate?
NHibernate是一個成熟的、開源的.NET框架物件關係對映器 (ORM)。它積極開發中,功能齊全,並已成功應用於數千個專案。它構建於ADO.NET之上,當前版本為NHibernate 4.0.4。
NHibernate是一個開源的.NET物件關係對映器,並根據GNU較寬鬆公共許可證釋出。
它基於Hibernate(一個流行的Java物件關係對映器),擁有非常成熟和活躍的程式碼庫。
它提供了一個框架,用於將面向物件的領域模型對映到傳統的關聯資料庫。
NHibernate由Tom Barrett發起,該專案自2003年2月首次提交以來就一直存在。
這是一個大型專案,提供了許多功能。
有一個NuGet包可用,這使得將其新增到專案中非常容易。
為什麼選擇NHibernate?
現在的問題是,我們為什麼需要物件關係對映器 (ORM)?這是因為物件世界和關係世界之間存在脫節。
在物件世界中,一切都是圍繞物件展開的;我們稱之為物件的東西擁有我們的資料。
關係世界是完全基於集合的,我們處理的是表和行,這與物件世界不同。
在物件世界中,我們有單向關聯。如果一個客戶有一個指向訂單的指標,並不一定意味著訂單也有一個指向客戶的指標,它可能也有可能沒有。
在關係世界中,所有關聯都是雙向的,可以透過外部索引鍵實現。
所有關聯本質上都是雙向的,因此當我們處理物件關係對映時,我們也需要處理這種脫節。
在物件世界中,我們使用的是單向指標,而在關係世界中,我們有本質上是雙向的外部索引鍵。
物件世界具有繼承的概念,其中車輛可以有多個不同的子類,因此汽車是一種車輛,船是一種車輛,跑車是一種汽車,這些都是繼承關係的型別。
關係世界沒有這種繼承的概念。
對映
那麼我們如何對映所有這些不相交的關係?這個對映的概念來自於物件關係對映器。主要有以下三種需要理解的內容,如下圖所示。
在您的應用程式中,您將需要類定義,這通常是C#程式碼及其.NET程式碼,用於表示我們的類,例如Employee類、Customer類、Order類等。
在底部,您可以看到資料庫模式,這是我們在關係資料庫中的資料定義語言 (DDL),它指定了客戶表、員工表的外觀。
在這兩者之間,我們有對映元資料,它告訴物件關係對映器如何將C#中的物件世界轉換為資料庫世界中的行、列和外部索引鍵關係。
這種對映元資料可以用多種不同的方式表示,我們將研究在NHibernate應用程式中最典型的幾種不同方式。
它由HBM(Hibernate Mapping)檔案表示,它們是XML檔案。
支援的資料庫
NHibernate支援各種不同的資料庫。任何現有的關係資料庫都可以被NHibernate訪問。
SQL Server是主要支援的資料庫,大多數開發人員在開發過程中都在使用它,它可能是最常見的資料庫。
它也與Oracle很好地配合使用。
它還支援DB2、Firebird、MySQL、PostgreSQL、SQLite。
它還具有ODBC和OLEDB驅動程式。