NH2.0 don't support ambient transactions.In NH2.1 we start some work about
it.
If you are using ActiveRecord you can use NHibernateFacilities of Castle +
CastleTransactionFacilities&services.
2008/10/16 Tyler Burd <[EMAIL PROTECTED]>
> I'm trying to use System.Transactions with NHibernate (actually, I'm
> trying to use NHibernate/ActiveRecord with NServiceBus, which surrounds
> message handling with a TransactionScope). I am running off of the trunk.
> I'm having a few issues, unfortunately.
>
>
>
> Basically, I'm trying to do this (pseudo code):
>
>
>
> using (var tx = new TransactionScope())
>
> {
>
> using (var nhSession1 = OpenSession())
>
> {
>
> //perform operations and flush session
>
> }
>
> using (var nhSession2 = OpenSession())
>
> {
>
> //perform operations and flush session
>
> }
>
> }
>
>
>
> So a System.Transactions.TransactionScope already exists when I open and
> close my NH sessions. Ideally, I'd like those sessions to take part in the
> larger distributed transaction provided by the ambient TransactionScope.
> Whenever a session is disposed of, though, I get this exception:
>
>
>
> "System.InvalidOperationException: Disconnect cannot be called while a
> transaction is in progress.
>
> at NHibernate.AdoNet.ConnectionManager.Disconnect() in
> d:\oss\nhibernate\src\NHibernate\AdoNet\ConnectionManager.cs:line 156
>
> at NHibernate.AdoNet.ConnectionManager.Close() in
> d:\oss\nhibernate\src\NHibernate\AdoNet\ConnectionManager.cs:line 122
>
> at NHibernate.Impl.SessionImpl.Close() in
> d:\oss\nhibernate\src\NHibernate\Impl\SessionImpl.cs:line 314
>
> at NHibernate.Impl.SessionImpl.Dispose(Boolean isDisposing) in
> d:\oss\nhibernate\src\NHibernate\Impl\SessionImpl.cs:line 1373
>
> at NHibernate.Impl.SessionImpl.Dispose() in
> d:\oss\nhibernate\src\NHibernate\Impl\SessionImpl.cs:line 1349
>
> at
> Castle.ActiveRecord.Framework.SessionFactoryHolder.ReleaseSession(ISession
> session) in
> d:\oss\castle-trunk\ActiveRecord\Castle.ActiveRecord\Framework\SessionFactoryHolder.cs:line
> 258
>
> at Castle.ActiveRecord.ActiveRecordBase.FindByPrimaryKey(Type
> targetType, Object id, Boolean throwOnNotFound) in
> d:\oss\castle-trunk\ActiveRecord\Castle.ActiveRecord\Framework\ActiveRecordBase.cs:line
> 1161
>
> at Castle.ActiveRecord.ActiveRecordMediator.FindByPrimaryKey(Type
> targetType, Object id, Boolean throwOnNotFound) in
> d:\oss\castle-trunk\ActiveRecord\Castle.ActiveRecord\Framework\ActiveRecordMediator.cs:line
> 54
>
> at Rhino.Commons.ARRepository`1.Load(Object id) in
> d:\oss\rhino-tools\rhino-commons\Rhino.Commons.ActiveRecord\Repositories\ARRepository.cs:line
> 59"
>
>
>
>
>
> I have tried setting the connection.release_mode property to "on_close",
> and I have even tried nesting a TransactionScope with
> TransactionOption.Suppress (so there should be NO ambient transaction), but
> NHibernate still gives me that exception.
>
>
>
> I see from the NHibernate.Test.SystemTransactions.TransactionFixture tests
> that opening a TransactionScope *within* an open session works, but
> shouldn't opening and closing a session within a TransactionScope also
> work? Using raw ADO I can open and close connections within a
> TransactionScope and everything works fine.
>
>
>
> I'd greatly appreciate it if someone could help me identify whether a bug
> exists in NH or if I'm simply overlooking something. Thanks.
>
>
>
> -tyler
>
> >
>
--
Fabio Maulo
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---