NHibernate+MySql常見問題

來源:互聯網
上載者:User

標籤:解決方案   程式   項目   資訊 nhibernate+mysql   

版本:

    NHibernate :NHibernate 4.0.1GA

    MySql:MySql 5.0.1


常見問題一:

    “NHibernate.HibernateException”類型的未處理的例外狀況在 NHibernate.dll 中發生 

其他資訊: Could not create the driver from NHibernate.Driver.MySqlDataDriver.


解決方案:

    把MySql.Data.dll程式集引入到項目中,這個問題就解決了。原因在於找不到驅動。



常見問題二:


    異常:已引發: "Duplicate class/entity mapping MySqlLib.TyAsset" (NHibernate.DuplicateMappingException)

引發了一個 NHibernate.DuplicateMappingException: "Duplicate class/entity mapping MySqlLib.TyAsset"


解決方案:

  

    這個問題是因為在如下的代碼的問題:

    

<?xml version="1.0" encoding="utf-8"?>
<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
<session-factory name="_sessionFactory">
<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
<property name="connection.connection_string">
      User Id=root;Password=123456;Host=127.0.0.1;Port=3306;Database=test;Persist Security Info=True
      <!--User Id=itywuser;Password=qwe#123;Host=192.168.72.201;Port=3316;Database=tysx;Persist Security Info=True-->
    </property>
<property name="dialect">NHibernate.Dialect.MySQLDialect</property>
    <property name="show_sql">true</property>
    <property name="hbm2ddl.keywords">none</property>
    <property name="hbm2ddl.auto">create</property>
    <mapping assembly="MySqlLib"/>
</session-factory>
</hibernate-configuration>


  因為hibernate.cfg.xml檔案中已經添加了<mapping assembly="xxxx"/>,如果你在載入這個檔案時添加了如下代碼就會出現這個問題:

    ISessionFactory factory = (new Configuration().Configure("D:\\實習文檔\\ASP資料庫\\TestMySqlLib\\Test\\MySql.cfg.xml")).AddAssembly("TestMySqlLib").BuildSessionFactory();

重複的載入了程式集。




常見問題三:

    

    異常:已引發: "Could not compile the mapping document: MySqlLib.TyAsset.hbm.xml" (NHibernate.MappingException)

引發了一個 NHibernate.MappingException: "Could not compile the mapping document: MySqlLib.TyAsset.hbm.xml"

線程: <無名稱>[11980]

    

解決方案:


    這個問題出在hbm.xml檔案是毋庸置疑的,代碼如下:

<hibernate-mapping assembly="TestMySqlLib" xmlns="urn:nhibernate-mapping-2.2" default-lazy="false">
  <class name="Student" table="student" lazy="false">
<!--正確的做法-->
<hibernate-mapping assembly="TestMySqlLib" xmlns="urn:nhibernate-mapping-2.2" default-lazy="false">
  <class name="TestMySqlLib.Student,TestMySqlLib" table="student" lazy="false">

   

    這個官方文檔中有詳細的說明,網路上也有很多文章說這個問題,我就不再這裡贅述這個原因了。




常見問題四:


    “System.ArgumentException”類型的未處理的例外狀況在 System.Data.dll 中發生 

其他資訊: 列“ReservedWord”不屬於表 ReservedWords。


解決方案:

    在hibernate.cfg.xml檔案中添加資料來源的一條屬性設定:如下

        <property name="hbm2ddl.keywords">none</property>

  原因請參看hbm2ddl.keywords的詳解,文章連結:http://www.cnblogs.com/Byrd/archive/2012/01/09/2317230.html




常見問題五:


    “NHibernate.Cfg.HibernateConfigException”類型的未處理的例外狀況在 NHibernate.dll 中發生 其他資訊: An exception occurred during configuration of persistence layer.


解決方案:

    這個問題主要出在一下代碼中:

        ISessionFactory factory = (new Configuration().Configure()).AddAssembly("TestMySqlLib").BuildSessionFactory();

    第一:保證你的設定檔名為:hibernate.cfg.xml

    第二:設定檔案hibernate.cfg.xml檔案的輸出屬性,為始終複製。因為採用上面方式載入設定檔,會到debug目錄下去找名字為hibernate.cfg.xml的檔案。關於設定檔載入方式可在我的部落格中找相關文章。




常見問題六:

    

    “NHibernate.MappingException”類型的未處理的例外狀況在 NHibernate.dll 中發生 

其他資訊: Could not add assembly testMySqlLib


解決方案:

    這個問題剛好和第二問題剛好相反,沒有添加程式集,有兩個方法可以解決這個問題

    第一:

        在hibernate.cfg.xml文檔中添加<mapping assembly="xxxx"/>

    第二:

        在載入hibernate.cfg.xml檔案時用如下代碼:

    ISessionFactory factory = (new Configuration().Configure("D:\\實習文檔\\ASP資料庫\\TestMySqlLib\\Test\\MySql.cfg.xml")).AddAssembly("xxxx").BuildSessionFactory();



常見問題七:


    異常:已捕獲: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ Sex varchar, Age int, Addr varchar, Phone varchar, primary key (Stuno))‘ at line 1" (MySql.Data.MySqlClient.MySqlException)

線程: <無名稱>[2884]


解決方案:

    

        該問題尚未尋找到解決方案,如果您和我一樣碰到這個問題並且已經解決了或者你有自己的看法,請在下面留言告訴我還有更多的網友,我們一起解決這個問題。謝謝。



常見問題八:

    

異常:已引發: "未能負載檔案或程式集“NHibernate.XmlSerializers, Version=3.0.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4”或它的某一個依賴項。系統找不到指定的檔案。" (System.IO.FileNotFoundException)引發了一個 System.IO.FileNotFoundException: "未能負載檔案或程式集“NHibernate.XmlSerializers, Version=3.0.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4”或它的某一個依賴項。系統找不到指定的檔案。"

線程: <無名稱>[8276]


解決方案:

    

    該問題尚未尋找到解決方案,如果您和我一樣碰到這個問題並且已經解決了或者你有自己的看法,請在下面留言告訴我還有更多的網友,我們一起解決這個問題。謝謝。


常見問題九:

異常:已引發: "No persister for: StudentLib.Student" (NHibernate.MappingException)

引發了一個 NHibernate.MappingException: "No persister for: StudentLib.Student"

線程: <無名稱>[18324]



解決方案:

    一般這種是因為沒有把student.hbm.xml檔案設定為嵌入資源。只要把對應檔設定為嵌入資源就可以解決這個問題了。


本文出自 “愛咖啡” 部落格,請務必保留此出處http://4837471.blog.51cto.com/4827471/1567675

NHibernate+MySql常見問題

聯繫我們

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