You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ibatis.apache.org by "Bill Sorensen (JIRA)" <ib...@incubator.apache.org> on 2006/12/27 21:54:20 UTC
[jira] Created: (IBATISNET-201) Starting transaction after open
connection
Starting transaction after open connection
------------------------------------------
Key: IBATISNET-201
URL: http://issues.apache.org/jira/browse/IBATISNET-201
Project: iBatis for .NET
Issue Type: Bug
Components: DataMapper
Affects Versions: DataMapper 1.5.1
Environment: Windows XP SP2, SQLEXPRESS
Reporter: Bill Sorensen
Priority: Minor
I'm running into problems with disposing of a session. I'd like to keep a connection open for an extended period, and occasionally run transactions in it. If I write my code as follows:
using (IDalSession session = Mapper.Instance().OpenConnection())
{
Mapper.Instance().LocalSession.BeginTransaction(false);
// do stuff
Mapper.Instance().LocalSession.CommitTransaction(false);
}
The code blows up when the using block ends:
System.InvalidOperationException: This SqlTransaction has completed; it is no longer usable.
at System.Data.SqlClient.SqlTransaction.ZombieCheck()
at System.Data.SqlClient.SqlTransaction.Rollback()
at IBatisNet.DataMapper.SqlMapSession.RollBackTransaction()
at IBatisNet.DataMapper.SqlMapper.RollBackTransaction()
at IBatisNet.DataMapper.SqlMapSession.Dispose()
This is a simplified example - the final code would have try..catch and multiple transactions over time (not nested).
My workaround is to call OpenConnection() and CloseConnection() explicitly, and avoid the using block.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira