Мы представляем поддержку nservicebus 3 и саги в нашем приложении. Мы настроили NHibernate саги стойкой бактерии следующим образом:nservicebus3: SagaPersister Нет текущей сессии
<NHibernateSagaPersisterConfig>
<NHibernateProperties>
<add Key="connection.provider" Value="NHibernate.Connection.DriverConnectionProvider"/>
<add Key="connection.driver_class" Value="NHibernate.Driver.SqlClientDriver"/>
<add Key="dialect" Value="NHibernate.Dialect.MsSql2008Dialect"/>
<add Key="connection.connection_string_name" Value="TeamGameServiceDB"/>
</NHibernateProperties>
</NHibernateSagaPersisterConfig>
public void InitializeServiceBus(IWindsorContainer container)
{
SetLoggingLibrary.Log4Net(log4net.Config.XmlConfigurator.Configure);
Configure.With()
.DefiningMessagesAs(t => t.ImplementsTheInterface(typeof (IMessage)))
.Log4Net()
.CastleWindsorBuilder(container)
.XmlSerializer()
.MsmqTransport()
.IsolationLevel(System.Transactions.IsolationLevel.RepeatableRead)
.UnicastBus()
.Sagas()
.NHibernateSagaPersister();
}
Когда сага собирается быть сохранялся я получаю исключение, говоря «Нет Session не связан с текущим контекстом». Я просматриваю проект nservicebus.nhibernate, и я не могу понять, кто несет ответственность за настройку текущего сеанса, используемого SagaPersistor (резидент saga использует ISessionFactory.GetCurrentSession()). Заводская настройка сеанса, настроенная с помощью nhibernate saga persister, настроена на использование «NHibernate.Context.ThreadStaticSessionContext», что подразумевает, что что-то в стеке nservicebus должно назначить это. Может ли кто-нибудь помочь мне пролить свет на то, как я могу назначить ISessionFactory.GetCurrentSession()? Сага, которая должна сохраняться, начинается с сообщения bus.SendLocal.
Perfect, спасибо! – Marius