是否必须在事务期间保持(同一)SQL 连接打开,是否必须在调用 BeginTransaction 的同一连接上调用 CommitTransaction 和 RollbackTransaction。
我们有一个数据库帮助程序类,其中包含开始、提交和回滚事务的方法,以及通常的选择、执行存储过程等。
辅助类看起来或多或少像这样:
public class DatabaseHelper
{
public void BeginTransaction()
{
// open connection, but dont close it.
}
public void CommitTransaction()
{
// close the connection
}
public void RollbackTransaction()
{
// close the connection
}
因此,我们不能做通常的事情(我更喜欢这样做),例如:
using (sqlCon = new SqlConnection(connectionString))
{
// sql operations here
}
当前,只要存在现有事务,帮助程序类就会使连接保持打开状态,并在提交或回滚期间将其关闭。然而,这让我想知道这是否真的是最好的方法?连接是否必须在事务期间保持打开状态?
最佳答案
是的,它必须保持开放。您可以处理您的类的 OnDispose 和其中的连接的 Dispose。
public class DatabaseHelper : IDisposable
{
public void Dispose()
{
//close/dispose connection here
}
}
那么你可以做...
using(DatabaseHelper db = new DatabaseHelper())
{
}
关于c# - SQL 连接和事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7204989/