我在設置NHibernate時遇到了一些麻煩,我不太確定問題到底是什麼。我試圖將一個域對象保存到數據庫(Oracle 10g XE)。但是,在嘗試創建ISessionFactory時出現TypeInitializationException。這裏是我的hibernate.cfg.xml是什麼樣子:NHibernate無法創建SessionFactory
<?xml version="1.0" encoding="utf-8"?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
<session-factory name="MyProject.DataAccess">
<property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>
<property name="connection.connection_string">
User ID=myid;Password=mypassword;Data Source=localhost
</property>
<property name="show_sql">true</property>
<property name="dialect">NHibernate.Dialect.OracleDialect</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
<mapping resource="MyProject/Domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
我創建了我會用堅持域對象與數據庫的DAO。 DAO使用一個創建SessionFactory的HibernateUtil類。這兩個類都與Hibernate配置一起位於DataAccess命名空間中。這是發生異常的地方。這裏是該類:
public class HibernateUtil
{
private static ISessionFactory SessionFactory = BuildSessionFactory();
private static ISessionFactory BuildSessionFactory()
{
try
{
// This seems to be where the problem occurs
return new Configuration().Configure().BuildSessionFactory();
}
catch (TypeInitializationException ex)
{
Console.WriteLine("Initial SessionFactory creation failed." + ex);
throw new Exception("Unable to create SessionFactory.");
}
}
public static ISessionFactory GetSessionFactory()
{
return SessionFactory;
}
}
DataAccess命名空間引用NHibernate dll。這與我在Hibernate中使用的Java實際上是一樣的設置,所以我不完全確定我在這裏做錯了什麼。有任何想法嗎?
編輯
最裏面的例外是:
「找不到文件「C:\用戶\泰勒\文檔\ Visual Studio 2010的\項目\ MyProject的\ MyProject的\ ConsoleApplication \ BIN \調試\ hibernate.cfg.xml中」。」
ConsoleApplication包含創建User對象的入口點,並試圖用我的DAO持久化它。爲什麼在那裏尋找配置文件?實際的持久化發生在DataAccess中的DAO中。另外,當我將配置文件添加到ConsoleApplication時,它仍然沒有找到它。
後異常的內容的文件夾這個問題將得到解決,請。 – Vadim 2011-01-09 01:00:09
@Yads:我更新了我的帖子。 – 2011-01-09 07:26:21