调用存储过程时的.NET 4.0事务行为

时间:2014-05-15 16:48:43

标签: c# sql-server stored-procedures transactions

如果我创建SqlConnection并且不从C#代码为它创建SqlTransaction然后使用SqlCommand来调用存储过程,那么代码的事务行为是什么在以下两个场景中

  1. 存储过程没有任何BEGIN TRANSACTION语句
  2. 存储过程在开始时只有一个BEGIN TRANSACTION,以COMMIT TRANSACTION结尾。
  3. 假设没有发生会导致事务回滚的错误

    据我所知,存储过程将在事务外部调用,并导致以下行为:

    1. 存储过程中的每个语句都将在其自己的事务中执行
    2. 存储过程中打开的事务将是顶级事务,存储过程中的所有语句都将与该事务关联。
    3. 如果我对A和B场景中的理解是正确的,请发表评论。

1 个答案:

答案 0 :(得分:0)

您对A和B场景的理解是正确的。

当涉及到许多UI端数据交互并且人们更愿意在UI端处理它时,人们更喜欢ADO.NET事务。否则,您必须将所有数据传递给SQL端并让它处理它,这有时会成为开销。