从SQLConnection对象或从SqlCommand对象调用BeginTransaction之间有区别吗

本文关键字:对象 之间 有区别 BeginTransaction SqlCommand SQLConnection 调用 | 更新日期: 2023-09-27 18:25:05

因此,我使用c#中的sql将购买信息插入到一个表(sql server 2005)中,并将购买项目(多个)插入到另一个表中。

我希望通过调用BeginTransaction在事务中运行2个insert语句。

我注意到我可以从SqlConnection对象或SqlCommand对象执行此操作。我的直觉告诉我应该通过连接对象来完成,因为我将为每个插入使用一个命令对象,但它们都共享相同的连接。

我说得对吗?

总的来说,两者之间有区别吗?

从SQLConnection对象或从SqlCommand对象调用BeginTransaction之间有区别吗

从连接创建一个SqlTransaction(BeginTransaction),然后将其传递给每个SqlCommand对象。有一个构造函数将SqlTransaction作为参数,或者只设置SqlCommand.Transaction属性。

类似于:(抱歉在iPad上格式化困难)

var tran = db.BeginTransaction();
try {
  SqlCommand com = new SqlCommand(...., tran);
  // or.  
  com.Transaction=tran;
  // do the work, eg execute SQL 
  // finally commit the changes
  tran.Commit();
}
catch
{
  tran.Rollback();
}