Nhibernate串連oracle資料庫報 Could not compile the mapping document異常的解決方案

來源:互聯網
上載者:User

這個問題斷斷續續困擾了我一段時間,在網上搜遍了,沒搜到誰真正說解決了這個問題。項目裡用spring.net封裝的Nhibernate操作oracle資料庫一直沒出現類試問題,但這次用純Nhibernate連oracle老是報錯,最後解決了才發現是NHibernate版本問題引起的(這個報錯確實很迷惑人,感覺像hbm.xml引起的問題)。用純的NHibernate,當時為了快點測試自己想做的程式,就下了別人的DEMO直接用,雖然現在好像出3.0版本了,DEMO是2.0.0.4000版本的,我項目裡用spring.net封裝的nhibernate是2.1.0.4000版本的,一直用的很好,找啊搜啊,弄了很久,終於發現原來是 設定檔中<property name="dialect">NHibernate.Dialect.Oracle9iDialect</property>這個地方出的問題,因為我本地的dialect就是這個,最好才發現2.0版本應該是<property name="dialect">NHibernate.Dialect.Oracle9Dialect</property>,沒有這個i,然後一切都正常了。。。。這個還是我直接反編譯看兩個不同版本nhibernate比較出來的,錯誤原因改起來很快,找起來花了不少時間和彎路。

現在大概看了下,發現不同nhibernate版本配置起來都還有點小差異,版本換了,Iesi.Collections.dll檔案也得換,比如用2.1的,比2.0的配置至少要多<property name="proxyfactory.factory_class">的配置,而且如果用到了<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>,還要把NHibernate.ByteCode.Castle.dll和castle的檔案放進來,但具體這個是什麼用,我還沒有仔細研究,希望有人能整理出不同版本的設定檔的小差別和一些新增節點的含義。

設定檔最後為:

 

hibernate.cfg.xml

<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
    <session-factory name="NHibernate.Test" >
    <property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>    
    <property name="connection.connection_string">Data Source=DEMO;User Id=MyU1;Password=lawson;Pooling=true; Min Pool Size=0; Max Pool Size=512;</property>
        <!--<property name="adonet.batch_size">10</property>
        <property name="show_sql">true</property>-->
    <property name="dialect">NHibernate.Dialect.Oracle9Dialect</property><!--2.1的為NHibernate.Dialect.Oracle9iDialect-->
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <!--<property name="use_outer_join">true</property>
        <property name="command_timeout">10</property>
        <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>-->
    <!--<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>--><!--2.1的需要這個-->
    <mapping assembly="DomainModel"/>    
    </session-factory>
</hibernate-configuration>

 

 

這個問題現在看來好像不算什麼問題,對版本不熟悉,但真正遇到這種小問題的時候,網上又搜尋不到解決方案的時候,常常走彎路去想辦法解決,所以記錄一下吧。

今天本來沒想解決這個問題的,看了很久的razor解析引擎,想看下解析程式碼片段,發現封裝的好深啊,而且mvc3 rc原始碼裡都沒有他們的聲影,不知道是不是單獨的開源項目,我就只好反編譯看看了,這個確實是個全新的解析引擎,不是繼承PAGE這樣的解析方法,我以為像NVelocity一樣的解析,可以把程式碼片段拿到記憶體解析出來,比如網站做推薦位這些會用這個,動態解析資料庫裡的nvelocity代碼,但是反編譯看了下razor,發現他一樣的依賴於具體檔案,才能解析出來,就是必須有自己的cshtml頁面,才能解析出來,用reflector可以調試到一些封裝的dll,但是總有部分調式不進去,很煩,也許是分析的不夠深,如果有其他同學發現razor源碼,或者看到它可以不用cshtml檔案就能解析程式碼片段,麻煩說下哦。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.