Spring .Net Nhibernate Управление сессиями для консольного приложения - PullRequest
2 голосов
/ 01 апреля 2012

Я понимаю, что Spring может управлять вашими сессиями за вас, если настроен так:

<object name="SessionFactory"
                    type="MyApp.DAL.DAOs.SessionFactoryObject, Leverate.Crm.CrmService.DAL">
<!--My class which inherits from LocalSessionFactoryObject and defines the mapping assemblies to be used--> 

    <property name="ExposeTransactionAwareSessionFactory" value="true" />
    <property name="DbProvider" ref="DbProvider"/>
    <property name="HibernateProperties">
      <dictionary>
        <entry key="cache.use_second_level_cache" value="false"/>
        <entry key="command_timeout" value="180"/>
        <entry key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
        <entry key="dialect" value="NHibernate.Dialect.MsSql2005Dialect"/>
        <entry key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>

      </dictionary>
    </property>
    <property name="SchemaUpdate" value="false"/>
  </object>

    <db:provider id="DbProvider"
                   provider="SqlServer-1.1"
                   connectionString="Data Source=local;Initial Catalog=northwind;Trusted_Connection=Yes;"/>
Проблема

в том, что использование SessionFactory.GetCurrentSession() вызывает исключение 'No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here'.

Я видел несколько ответов о том, что в веб-контексте вы должны использовать openSessionInView (или что-то подобное) httpModule. Но что вы делаете в консольном приложении (или сервисе Windows)?

1 Ответ

3 голосов
/ 01 апреля 2012

Вы представляете свою фабрику сеансов как фабрику сеансов с учетом транзакций, что подразумевает, что Spring управляет сессиями для всех методов, которые правильно заключены в транзакцию.Для объединения ваших методов доступа к данным в транзакции с пружиной вы можете использовать декларативный (управляемый атрибутом) или программный подход.

...