应用WebMethod属性的TransactionOption参数控制事务

donet程序一般是通过web服务来操作数据库的,遇到有insert,update之类的语句时就用
OleDbTransaction OleTran=OleConn.BeginTransaction() ;
OleTran.Commit();
将这些语句包含起来已达到事务控制的目的。
今天发现设置WebMethod属性的TransactionOption参数也可以达到事务控制的目的。
将一个web服务方法的WebMethod部分设为[WebMethod(false,TransactionOption=TransactionOption.RequiresNew)],那么在该web服务方法中的所有数据库操作将都在一个事务中。
在使用TransactionOption之前要先引用System.EnterpriseServices.dll,因为系统没有默认引用它,再在web服务单元
using System.EnterpriseServices。
本来将多条更新语句写在一起(中间用分号隔开)也可以达到事务控制的目的,但这样只能检查出语法错误,对于逻辑错误(比如值溢出)它就没法回滚,但用 [WebMethod(false,TransactionOption=TransactionOption.RequiresNew)]
可以检查出任何错误,并回滚所有修改。

你可能感兴趣的:(transaction)