我们在我们的应用程序中引入了nservicebus 3和saga支持。我们已经配置了nhibernate saga持久化,如下所示:
<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();
}当传奇即将被持久化时,我得到了一个异常,说“没有会话绑定到当前上下文”。我浏览了nservicebus.nhibernate项目,但我找不出谁负责设置SagaPersistor使用的当前会话(传奇持久器使用ISessionFactory.GetCurrentSession())。由nhibernate saga持久器配置的会话工厂被设置为使用"NHibernate.Context.ThreadStaticSessionContext“,这意味着nservicebus堆栈中的某些东西应该分配它。有人能帮我讲讲如何让ISessionFactory.GetCurrentSession()被赋值吗?将要持久化的saga是从bus.SendLocal消息发起的。
发布于 2012-01-18 02:42:30
您需要使用NServiceBus.NHibernate.dll中包含的NHibernate UnitOfWork
https://stackoverflow.com/questions/8891606
复制相似问题