Thanks for the quick reply...

I have the source of 1.2.1 compiled under 2005.

My DatabaseManager code follows:

Public Module DatabaseManager

    Private _lock As Object = New Object()
    Private _mapper As SqlMapper
    Private _nestedMapper As SqlMapper

    Public Sub Configure(ByVal configurationFile As FileInfo, ByVal nestedConfigurationFile As FileInfo)

        Dim builder As DomSqlMapBuilder = New DomSqlMapBuilder()
        Dim nestedBuilder As DomSqlMapBuilder = New DomSqlMapBuilder()

        SyncLock (_lock)
            If _mapper Is Nothing Then
                _mapper = builder.Configure(configurationFile)
            End If

            If _nestedMapper Is Nothing Then
                If nestedConfigurationFile IsNot Nothing Then

                    If _log.IsInfoEnabled Then
                        _log.Info("Configuring nested mapper using configuration file {0} ", nestedConfigurationFile.Name)
                    End If

                    _nestedMapper = nestedBuilder.Configure(nestedConfigurationFile)

                    If _log.IsInfoEnabled Then
                        _log.Info("Done configuring nested mapper using configuration file {0} ", nestedConfigurationFile.Name)
                    End If

                End If
            End If

        End SyncLock

    End Sub
       
    Friend Function NestedInstance() As SqlMapper
        Dim mapper As SqlMapper
        SyncLock (_lock)
            mapper = _nestedMapper
        End SyncLock
        Return mapper
    End Function

    Friend Function Instance() As SqlMapper
        Dim mapper As SqlMapper
        SyncLock (_lock)
            mapper = _mapper
        End SyncLock
        Return mapper
    End Function
   
End Module

On 1/4/06, Gilles Bayon <ibatis.net@gmail.com> wrote:
Each SqlMapper use a different 'TLS' session store.
Which iBATIS version do you use ?

 
On 1/4/06, Michael Schall <mike.schall@gmail.com > wrote:
I need the ability to have muliple transactions / connections open to
the same database on the same thread at the same time.

For example I want to:
1) Open a connection and transaction (Session1) to a database
2) Perform multiple inserts to tables in the database
3) Commit and close (Session1)

Easy right.

My problem is that in order to perform the multiple inserts I need to
get / update information in another table.  I have created multiple
DomSqlMapBuilders, configure them with different configuration files,
and store them as separate SqlMapper instances.  So my example needs
to look like

1) Open a connection and transaction (Session1 on SqlMapper1) to a database
2) Open a connection and transaction (Session2 on SqlMapper2) to the
same database
3) Get and Increment Counter (Session2)
4) Commit and close (Session2)
5) Perform insert to table in the database using counter (Session1)
6) Open a connection and transaction (Session2) to the same database
7) Get and Increment Counter (Session2)
8) Commit and close (Session2)
9) Perform insert to table in the database using counter (Session1)
10) ...
11) Commit and close (Session1)

If for any reason I need to rollback (Session1) at step 10, the
actions performed on (Session2) should not be rolled back as they have
been committed.

However when I try and do step 2 SqlMapper2 is already in a
transaction.  It seems like due to the way the session is stored in
TLS, it will only allow for one session to be stored per thread.

Is there a way to get this to work?  I can submit code if that helps.

Thanks for your time.
Mike