標籤:解決方案 程式 項目 資訊 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常見問題