模块化编程是一种正确的方法,但它有时会导致需要额外努力和研究的问题。我有三个数据库插入函数,比如InsertName(),InsertAddress(),InsertPhoneNo()
。所有这些函数都必须执行,如果在任何函数中发生异常,则不会对数据库进行任何更改。
我所能做的就是将这三者合并在一起并使用sqltransaction。
InsertDetails()
{
using (SqlTransaction sqlTransaction = cn.BeginTransaction())
{
using (SqlCommand cm = new SqlCommand())
{
cm.Transaction = sqlTransaction;
InsertName();//Code to insert name
Insertaddress();//code to insert address
InsertPhoneNo();//code to insert phone no
}
sqlTransaction.Commit();
}
}
但上面的解决方案与我的模块化方法背道而驰。是否可以将多个函数绑定到一个sql事务而不合并它们,如果不能,这是实现此目的的最佳方法。
最佳答案
只需将cn
和sqlTransaction
传入函数,然后让函数使用传入参数,而不是打开它们自己的连接。