今晚我在学习中加强自己的知识,试图克服因为我之前工作的公司而产生的四年不良编程实践。其中我最近发现的一件事是 System.Transactions。经过几个小时的阅读后,我认为我已经足够了解它们的工作原理和为什么要使用它们。然而,我查看的所有示例都显示内联 T-SQL 被调用于事务中。
在进行数据库访问时,我几乎只使用存储过程,并且所有现有的存储过程都包装在其自己的 SqlTransactions 中。你知道的,“Begin Tran”然后回滚或提交。如果一个存储过程调用另一个存储过程,它也会创建一个事务,并且提交会一直向上传递,直到外部事务提交或者回滚。这很好用。
现在我的问题是,如果我想在我的代码中开始使用 System.Transactions - 仅仅为了监视连续的数据库任务,这些任务无法嵌套在单个存储过程中 - 那么它如何与我已经存在于存储过程中的 SqlTransactions 相关?
在我的存储过程中是否会添加一层保护以便在实际提交之前使用 System.Transactions,或者因为我显式地在我的 SqlTransaction 中提交,那么数据是否仍然会在基于代码的事务提交或回滚时持久化?
在进行数据库访问时,我几乎只使用存储过程,并且所有现有的存储过程都包装在其自己的 SqlTransactions 中。你知道的,“Begin Tran”然后回滚或提交。如果一个存储过程调用另一个存储过程,它也会创建一个事务,并且提交会一直向上传递,直到外部事务提交或者回滚。这很好用。
现在我的问题是,如果我想在我的代码中开始使用 System.Transactions - 仅仅为了监视连续的数据库任务,这些任务无法嵌套在单个存储过程中 - 那么它如何与我已经存在于存储过程中的 SqlTransactions 相关?
在我的存储过程中是否会添加一层保护以便在实际提交之前使用 System.Transactions,或者因为我显式地在我的 SqlTransaction 中提交,那么数据是否仍然会在基于代码的事务提交或回滚时持久化?