if (batcher!=null) batcher.CloseCommands();
IDbConnection c = connection;
connection=null;
if (autoClose) {
factory.CloseConnection(c);
return null;
}
else {
return c;
}
}
}
finally {
if ( callAfterTransactionCompletionFromDisconnect ) {
AfterTransactionCompletion();
}
}
}
从上面的代码中可以看出,如果autoClose为true才会自动关闭连接。
这样就实现了数据库事务的生命周期长于会话生命周期的事务处理方法,至于这种方法有没使用性,那就不好说了,因为要在OpenSession时使用数据库连接,那么如果我们把操作分散于各个对象之中的话,显然必须传递数据库连接或事务,但至少做到了数据库事务与会话无关。
IDbConnection c = connection;
connection=null;
if (autoClose) {
factory.CloseConnection(c);
return null;
}
else {
return c;
}
}
}
finally {
if ( callAfterTransactionCompletionFromDisconnect ) {
AfterTransactionCompletion();
}
}
}
从上面的代码中可以看出,如果autoClose为true才会自动关闭连接。
这样就实现了数据库事务的生命周期长于会话生命周期的事务处理方法,至于这种方法有没使用性,那就不好说了,因为要在OpenSession时使用数据库连接,那么如果我们把操作分散于各个对象之中的话,显然必须传递数据库连接或事务,但至少做到了数据库事务与会话无关。