Конфигурация nhibernate выдает исключение - PullRequest
0 голосов
/ 05 ноября 2011

Во время настройки (уровня сопротивления) nhibernate я получаю исключение.Сообщение говорит, что nhibernate не может найти файл конфигурации hibernate.cfg.xml.Но я проверил мой файл, и он настроен на копирование на выход всегда.Я храню отображения и постоянные классы в отдельной сборке.Но и консольный проект, и проект библиотеки классов имеют файл конфигурации в своей папке outpt.

Файл конфигурации

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">
      NHibernate.Connection.DriverConnectionProvider
    </property>
    <property name="dialect">
      NHibernate.Dialect.MsSql2008Dialect
    </property>
    <property name="connection.driver_class">
      NHibernate.Driver.SqlClientDriver
    </property>
    <property name="connection.connection_string">
      Data Source=(local); Initial Catalog=KrossThoughtDB;
      Integrated Security=SSPI
    </property>
    <property name="show_sql">
      true
    </property>   
    <mapping resource="MyApp.Domain.Model.Entities.Mappings.User.hbm.xml"   assembly="MyApp.Domain" />
    <mapping resource="MyApp.Domain.Model.Entities.Mappings.Blog.hbm.xml" assembly="MyApp.Domain" />
    <mapping resource="MyApp.Domain.Model.Entities.Mappings.Post.hbm.xml" assembly="MyApp.Domain" />
    <mapping resource="MyApp.Domain.Model.Entities.Mappings.Category.hbm.xml" assembly="MyApp.Domain" />
    <mapping resource="MyApp.Domain.Model.Entities.Mappings.Feedback.hbm.xml" assembly="MyApp.Domain" />
  </session-factory>
</hibernate-configuration>

Также я использую реализацию вспомогательного средства сеанса NHibernate, которая была предоставлена ​​в официальной документации по NHibernate.Помощник

public sealed class SessionHelper
{
    private const String CurrentSessionKey = "nhibernate.current_session";
    private static readonly ISessionFactory sessionFactory;

    static SessionHelper()
    {
        sessionFactory = new Configuration().
            Configure().
            BuildSessionFactory();
    }

    public static ISession GetCurrentSession()
    {
        var context = HttpContext.Current;
        var currentSession = context.Items[CurrentSessionKey] as ISession;

        if(null == currentSession)
        {
            currentSession = sessionFactory.OpenSession();
            context.Items[CurrentSessionKey] = currentSession;
        }

        return currentSession;
    }

    public static void CloseSession()
    {
        var context = HttpContext.Current;
        var currentSession = context.Items[CurrentSessionKey] as ISession;

        if(null == currentSession)
        {               
            return;
        }

        currentSession.Close();
        context.Items.Remove(CurrentSessionKey);
    }

    public static void CloseSessionFactory()
    {
        if(null != sessionFactory)
        {
            sessionFactory.Close();
        }
    }
}

И затем я вызываю этот код внутри моего примера консольного приложения

Код клиента

private static void Main(String[] args)
{
    // the next line exception's thrown
    using(var session = SessionHelper.GetCurrentSession())
    using(var tx = session.BeginTransaction())
    {
        // some actions...
        tx.Commit();
    }
}

Помощь!1023 *

Ответы [ 2 ]

2 голосов
/ 06 ноября 2011

Убедитесь, что присутствует следующая структура файла * .config:

<configuration>
    <configSections>
         <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/>
    </configSections>
    <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
     ....
    </hibernate-configuration>
</configuration>
0 голосов
/ 05 ноября 2011

Попробуйте установить свойство hibernate.cfg.xml «Копировать в выходной каталог» в «Копировать всегда».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...