【发布时间】:2011-08-26 21:10:04
【问题描述】:
您是否必须在事务期间保持(相同的)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
}
只要存在现有事务,帮助程序类当前就使连接保持打开状态,并在提交或回滚期间将其关闭。然而,这让我想知道这是否真的是最好的方法?连接是否必须在事务期间保持打开状态?
【问题讨论】:
-
你如何与那个助手一起工作? BeginTransaction 至少应返回您将传递回 Commit 方法的事务!
-
是的,我也不喜欢它,但我正在修复由其他人编写的现有生产代码,因此希望对已经测试和“工作”的内容进行尽可能少的更改.
标签: c# sql-server transactions database-connection