框架:NHibernate學習目錄

NHibernate 基本配置 (第一篇)html

摘要: 使用NHibernate最重要的一步就是配置,若是連NHibernate都尚未跑的起來,談何學習。今天就來詳解一下NHibernate的配置。1、NHibernate基本配置 NHibernate配置要注意的有: 一、NHibernate須要一個自定義的配置節點,通常放在Web.confi... 閱讀全文
 
NHibernate 之持久化類、攔截器 (第二篇)
摘要: 1、持久化類中成員標量的要求 做爲被NHibernate使用的持久化類,必須知足如下幾點要求: 一、聲明讀寫屬性 在NHibernate的使用中,持久化類的成員變量必須聲明對應的屬性,NHibernate支持public、internal、protected三種訪問修飾符。 二、提供標識屬性 持久化類必須提供一個標識屬性,標識屬性對應數據庫的主鍵。 固然這個是可選的,並不是強制性,可是強烈建議這麼作。這個標識屬性能夠叫任何名字,任何類型。 三、屬性必須是非密封的和虛的 持久化類中全部的屬性,必須聲明爲非密封的,也就是不能帶有sealed。並且必須帶有virtual... 閱讀全文
 
NHibernate 映射基礎(第三篇) 簡單映射、聯合主鍵
摘要: NHibernate徹底靠配置文件獲取其所需的一切信息,其中映射文件,是其獲取數據庫與C#程序關係的全部信息來源。1、簡單映射 下面先來一個簡單的例子,而後隨着不斷地對這個例子修修改改,從而真正瞭解映射文件。具體的資料能夠查看http://www.cnblogs.com/kissdodog/archive/2013/02/21/2919886.html 先來看一張表: 映射文件Product.hbm.xml: PersonModel.cs:namespace Model{ public class... 閱讀全文
 
NHibernate 集合映射基礎(第四篇) - 一對1、 一對多、多對多小示例
摘要: 映射文件,用於告訴NHibernate數據庫裏的表、列於.Net程序中的類的關係。所以映射文件的配置很是重要。 1、一對一 NHibernate一對一關係的配置方式使用<one-to-one>配置節點。 當咱們兩個表擁有相同的主鍵字段,主鍵值相同的須要關聯在一塊兒。比較典型的一個例子是,一個對象的屬性 閱讀全文
 
NHibernate 集合映射深刻 (第五篇) <set>,<list>,<map>,<bag>
摘要: 1、集合外鍵 在NHibernate中,典型的用於映射集合類的元素有,,,,,。 咱們回到上一篇,集合映射基礎當中的一對多查詢。對於集合類型: public virtual ISet ListPerson { get; set; } NHibernate的配置文件與之對應的是: 那麼、、、、、這些東西的用法以及它們之間的區別是什麼呢? 1. ISet集合中的對象是惟一的,無序的,不能經過索引、key值訪問。 在.Net中並無與對應的類。所以當咱們的配置文件是配置集合關係的時候,Model持久化類中ISet必須使用NHibernate的... 閱讀全文
 
 
NHibernate 組件基礎 (第六篇)
摘要: 1、組件簡介 組件(Component)能夠理解爲被一個對象所包含的對象而持久化,而並不是一個實體。簡單說來,假如數據庫有FirstName,LastName這兩個字段,咱們在C#中能夠將這兩個字段提取出來做爲一個Name對象使用。 示例,首先建一張表,並添加數據以下: Person.hbm.xml Model:namespace Model{ public class PersonModel { public virtual int Id { get; set;... 閱讀全文
 
NHibernate 延遲加載與當即加載 (第七篇)
摘要: 1、延遲加載 延遲加載能夠理解爲:當須要用的時候才加載。 假設咱們數據庫有一個Person對象,一個Country對象,其中Person屬於Country,一對多關係。當咱們Get()一個Person對象的時候。並不當即把Country對象也加入來,而是當咱們的代碼執行到要經過Person調用Country對象的時候,NHibernate纔到數據庫去查詢對應的Country對象,這就叫延遲加載。相反,若是咱們Get()一個Person對象,而且連與此Person對象相關聯的Country對象也一塊兒加載到程序中,這就叫當即加載。 延遲加載必須在Session的週期內,若是查詢了數據,可是程... 閱讀全文
 
NHibernate 數據查詢之Linto to NHibernate (第八篇)
摘要: 剛學NHibernate的時候以爲,HQL挺好用的,可是終歸沒有與其餘技術相關聯,只有NHibernate用到,一來容易忘記,二來沒有智能提示,排除錯誤什麼的都不給力,直到看到一個同事用Linq to NHibernate,那代碼是至關的清晰明瞭,其實什麼條件查詢,HQL什麼的感受只是一個NHibe 閱讀全文
 
NHibernate Linq查詢 擴展加強 (第九篇)
摘要: 在上一篇的Linq to NHibernate的介紹當中,所有是namespace NHibernate命名空間中的IQueryOver<TRoot, TSubType>接口提供的。IQueryOver<TRoot, TSubType>這個藉口實際上會被翻譯成條件查詢(Criteria Querie 閱讀全文
 
NHibernate之一級緩存(第十篇)
摘要: NHibernate的一級緩存,名詞好像很牛B,很難。實際上就是ISession緩存。存儲在ISession的運行週期內。而二級緩存則存儲在ISessionFactory內。1、ISession一級緩存測試 ISession默認開啓一級緩存,不須要任何配置。ISession緩存在ISession建立後就可使用,之後每次經過此ISession操做數據時,ISession會檢測自身是否緩存有相應的數據,若是有則直接返回。若是沒有,這時才查詢數據庫返回,同時緩存到ISession。當釋放ISession實例的時候,緩存自動銷燬。 示例: 首先咱們先開啓配置文件中的show_sql節點: ... 閱讀全文
 
NHibernate二級緩存(第十一篇)
摘要: 1、NHibernate二級緩存簡介 NHibernate由ISessionFactory建立,能夠被全部的ISession共享。 注意NHibernate查找緩存的順序,在使用ISession操做數據時,NHibernate會先從一級緩存中查找須要的數據,若是一級緩存不存在須要的數據,則查找二級緩存,若是二級緩存存在所需數據,則直接使用緩存中的數據。若是二級緩存都沒有,那麼才執行SQL語句,從數據庫中查找緩存。 NHibernate自己提供了一個基於Hashtable的HashtableCache緩存,不過功能有限且性能不高。不適合用於大型應用程序,不過咱們可使用第三方緩存提供程... 閱讀全文
 
 
NHibernate使用MemCache二級緩存
摘要: 首先,固然是安裝MemCache服務器端了。 而後配置過程,僅僅兩個問題。 一、NHibernate要與NHibernate.Cache的版本要一致。不然,NHibernate.Caches.MemCache.MemCacheProvider沒法實例化。 二、要引用log4net,不然Memcached.ClientLibrary.SockIOPool沒法實例化。 App.config: NHibernate.Dialect.MsSql2008Dialect NHibernate.Connection.... 閱讀全文
 
 
NHibernate 操做視圖 第十三篇
摘要: 在NHibernate中,能夠把視圖當表同樣操做,只須要記住一點就是,視圖是隻讀的,所以映射實體的setter應該改成protected。 新建一個視圖以下: 持久化類: public class CountryPersonModel { public virtual int PersonId { get; protected set; } public virtual string PersonName { get; protected set; } public virtual string CountryName { ge... 閱讀全文
 
 
NHibernate 存儲過程 第十四篇
摘要: NHibernate也是可以操做存儲過程的,不過第一次配置可能會碰到不少錯誤。1、刪除 首先,咱們新建一個存儲過程以下: CREATE PROC DeletePerson @Id int AS DELETE FROM Person WHERE PersonId = @Id; 修改映射文件,添加刪除對象的存儲過程: DeletePerson ? 執行存代碼: using (ISession session = sessionFactory.Op... 閱讀全文
 
NHibernate 過濾器(第十五篇)
摘要: NHibernate過濾器至關於定義一個很是相似於類和集合上使用的where子句。ISession 中默認是不啓用過濾器的,必須經過ISession.EnableFilter()方法顯式的啓用。 該方法返回被啓用的IFilter的實例。這也支持鏈式操做。 過濾器主要的配置都在映射文件內完成。來看示例: 操做: static void Main(string[] args) { ISessionFactory _sessionFactory =... 閱讀全文
 
 
NHibernate 繼承映射(第十六篇)
摘要: 在NHibernate的映射中,關於繼承的映射策略有3種方式單表繼承類表繼承具體表繼承 另外還有一種比較特別的多態映射隱式多態 下面分別來闡述NHibernate繼承映射的各類策略要點。1、單表繼承 單表繼承的方式是,全部的字段都放在一個表中,用一個字段來區分子類。使用配置節點配置子類。 看DEMO,首先新建一張Animal表以下: 映射文件:Animal.hbm.xml: //discriminator-value用來標記表中哪些行是青蛙 映射文件:Fish.hbm.xml ... 閱讀全文
 
 
NHibernate之配置文件屬性說明
摘要: 1、NHibernate配置所支持的屬性屬性名用途dialect設置NHibernate的Dialect類名 - 容許NHibernate針對特定的關係數據庫生成優化的SQL可用值:full.classname.of.Dialect, assemblydefault_schema在生成的SQL中, 將給定的schema/tablespace附加於非全限定名的表名上.可用值:SCHEMA_NAMEuse_outer_join容許外鏈接抓取,已棄用,請使用max_fetch_depth。可用值:true|falsemax_fetch_depth爲單向關聯(一對一, 多對一)的外鏈接抓取(outer 閱讀全文
 
 
NHibernate之映射文件配置說明
摘要: 1.hibernate-mapping 這個元素包括如下可選的屬性。schema屬性,指明瞭這個映射所引用的表所在的schema名稱。倘若指定了這個屬性, 表名會加上所指定的schema的名字擴展爲全限定名。倘若沒有指定,表名就不會使用全限定名。default-cascade 指定了未明確註明cascade屬性的.Net屬性和集合類.Net會採起什麼樣的默認級聯風格。 auto-import屬性默認讓咱們在查詢語言中可使用非全限定名的類名。assembly和 namespace指定了持久化類的應用程序集名稱和其所在的名稱空間名。 各選項說明:(1)schema (... 閱讀全文
 
 
NHibernate 幫助類(單例實際運用)
摘要: 在NHibernate中,ISessionFactory是線程安全的,對應一個數據庫。它是生成ISession的工廠。而ISession是線程不安全的。 建立一個ISessionFactory須要消耗比較多的資源。所以,咱們只在程序初始化的時候建立一次,之後就一直使用這個ISessionFactory。 而ISession的建立只消耗不多的資源。所以咱們能夠隨意建立。1、原始單例模式封裝的ISessionFactory 所以,對於ISessionFactory,咱們使用餓漢單例模式實現它。 原始餓漢單例模式封裝ISessionFactory實例: //密封類 ... 閱讀全文
相關文章
相關標籤/搜索