У меня проблемы с настройкой NHibernate, и я не совсем уверен, в чем именно проблема. Я пытаюсь сохранить объект домена в базе данных (Oracle 10g XE). Тем не менее, я получаю TypeInitializationException при попытке создать ISessionFactory. Вот как выглядит мой файл hibernate.cfg.xml:
<?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 использует класс HibernateUtil, который создает SessionFactory. Оба класса находятся в пространстве имен DataAccess вместе с конфигурацией Hibernate. Здесь происходит исключение. Вот этот класс:
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 ссылается на библиотеки DLL NHibernate. Это практически та же самая настройка, которую я использовал с Hibernate в Java, поэтому я не совсем уверен, что я делаю здесь неправильно. Есть идеи?
1009 ** * Редактировать 1010 ** * 1011
Самым внутренним исключением является следующее:
"Не удалось найти файл 'C: \ Users \ Tyler \ Documents \ Visual Studio 2010 \ Projects \ MyProject \ MyProject \ ConsoleApplication \ bin \ Debug \ hibernate.cfg.xml'."
ConsoleApplication содержит точку входа, в которой я создал объект User и пытаюсь сохранить его в моем DAO. Почему он ищет файл конфигурации там? Фактическое сохранение происходит в DAO, который находится в DataAccess. Кроме того, когда я добавляю файл конфигурации в ConsoleApplication, он все равно не находит его.