gpt4 book ai didi

c# - 跨多个事务管理 SQL 数据库连接

转载 作者:太空宇宙 更新时间:2023-11-03 11:54:03 24 4
gpt4 key购买 nike

我们有一个 DAL,它需要将许多数据库插入包装在一个我们可以回滚或提交的事务中。

处理该问题的最佳做法是什么?

我们目前正在做以下事情:

  1. 创建数据库连接和事务
  2. 用表示要执行的操作的所有类填充一个集合。通过构造函数传入连接。
  3. 在 try/catch 中,遍历所有操作类并调用它们的 Publish() 方法
  4. 如果成功则提交(关闭连接)或如果错误则回滚(关闭连接)。

这个过程可能需要一些时间,我们似乎用完了池中的数据库连接。有没有更好的方法来管理交易?

这是使用SQL 2008、.net 3.5和4.1版本的企业库数据访问。

最佳答案

您输入错误,或者问题可能是因为您将 SqlConnection 传递给 Publish 方法(而不是传递 SqlTransaction)。

SqlTransaction 有一个连接属性,所有的更新都应该使用它。

所以你想做类似的事情

// Create connection
SqlConnection connection = ObtainSqlConnection()

// Create transaction
SqlTransaction sqlTransaction = connection.BeginTransaction();

try
{
foreach (Action action in collectionOfActionsToPerform)
{
action.Publish(sqlTransaction)
}

sqlTransaction.Commit();
}
catch
{
sqlTransaction.Rollback();
}

如果这是误解,请尝试发布一些伪代码。

关于c# - 跨多个事务管理 SQL 数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1212816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com