从SQLConnection对象或从SqlCommand对象调用BeginTransaction之间有区别吗
本文关键字:对象 之间 有区别 BeginTransaction SqlCommand SQLConnection 调用 | 更新日期: 2023-09-27 18:25:05
因此,我使用c#中的sql将购买信息插入到一个表(sql server 2005)中,并将购买项目(多个)插入到另一个表中。
我希望通过调用BeginTransaction在事务中运行2个insert语句。
我注意到我可以从SqlConnection对象或SqlCommand对象执行此操作。我的直觉告诉我应该通过连接对象来完成,因为我将为每个插入使用一个命令对象,但它们都共享相同的连接。
我说得对吗?
总的来说,两者之间有区别吗?
从连接创建一个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();
}