NHibernate擴充:FluentNHibernate基礎教程

來源:互聯網
上載者:User

http://www.cyqdata.com/nhibernate/article-detail-2523

 

經過大大小小的項目之後,在在DevText項目中使用下Fluent NHibernate,今天給大夥介紹一下Fluent NHibernate,以及使用這個有什麼好處及帶來什麼方便!

以下為介紹內容:

一:Fluent NHibernate基礎介紹

Fluent NHibernate提供了一個方法讓你不再需要去寫NHibernate的標準對應檔(.hbm.xml),而是可以把你的對應檔都使用C#來寫。這樣做,方便了我們的代碼重構,提供了代碼的易讀性,並精簡了項目代碼。

它還包含了如下幾個工具:

Fluent NHibernate是NHibernate核心代碼的擴充,完全相容NHibernate2.X。

 

二:使用Fluent NHibernate的好處是?

NHibernate就不用說了,大家都知道是一個好的ORM工具,它的mapping都是以XML格式定義的。每個類都有一個mapping檔案對應到資料庫對應的表。 Fluent NHibernate取消了這些xml檔案。

為什麼要取代XML檔案呢?

a.XML不是Just-In-Time 編譯的。當你的XML設定檔有錯誤時,你只有在運行時才能看到哪裡出錯。

b.XML是非常繁瑣的。的確在NHibernate中的設定檔,xml節點非常簡單,但是仍然掩蓋不了XML檔案本身的繁瑣性。

c.對應檔中重複的屬性設定。比如在xml中我們需要設定每個string類型的欄位都不允許為空白,長度大於1000,int型都得有個預設值為-1,這樣最終的xml設定檔你會發現有很多的重複工作。

Fluent NHibernate如何克服這些缺陷呢?

Fluent NHibernate把這些配置為檔案都轉化為了C#代碼,這樣可以讓你的mapping直接在編譯時間就完成。

 

下面是傳統的HBM XML mapping檔案和Fluent NHibernate的對比。

 

Fluent NHibernate的:http://github.com/jagregory/fluent-nhibernate

 

三:一個簡單的Fluent NHibernate的樣本

前面只是大致的說明了為什麼要用Fluent NHibernate。現在我們來類比一個情境,看看如何在項目中使用Fluent NHibernate。

我們情境中有Employee, Store何Product這幾個實體,product和Store之間是多對多的關係。

 

實體的類如下:

Employee:

Product:

Store:

 

如果是使用NHibernate,那麼接下來我們只能配置痛苦的XML檔案,不過用FLuent NHibernate我們就不需要寫設定檔了,只需要簡單的寫C#代碼就OK了。

說實話這個和CTP4中的mapping方式特像。

 

先來看看Employee的mapping檔案:

很明顯這裡的Map方法相當於XML設定檔的Property,而Reference相當於Many-To-One。

 

Product的Mapping如下:

 

這裡的HasManyToMany相當於NHibernaet中的Many-To-Many。

 

4.下一步是建立資料庫和SessionFactory:

建立一個資料庫:

SessionFacotry:

這裡的資料庫連接我使用的是直接輸入Server,db,username,pwd等,FluentNHibernate還支援其它各種資料庫連接形式:

 

最後是添加記錄:

 

運行程式,資料庫中表會自動建立,且資料添加成功。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.