У меня возникли проблемы с настройкой NHibernate, и я не уверен, в чем проблема. Я пытаюсь сохранить объект домена в базе данных (Oracle 10g XE). Тем не менее, я получаю исключение TypeInitializationException при попытке создать ISessionFactory. Вот что мой 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 использует класс 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, поэтому я не совсем уверен, что я здесь делаю неправильно. Есть идеи?
Редактировать
Внутреннее исключение состоит в следующем:
«Не удалось найти файл«C: \ Users \ Tyler \ Documents \ Visual Studio 2010 \ Projects \ MyProject \ MyProject \ ConsoleApplication \ Bin \ Debug \ hibernate.cfg.xml».»
ConsoleApplication содержит точку входа, в которой я создал объект User, и пытаюсь сохранить его с помощью DAO. Почему он ищет файл конфигурации там? Фактическое сохранение происходит в DAO, который находится в DataAccess. Кроме того, когда я добавляю файл конфигурации в ConsoleApplication, он все равно его не находит.
Публиковать содержимое, за исключением пожалуйста. – Vadim
@Yads: Я обновил свой пост. –