isp*_*iro 7 .net c# sql sql-server linq-to-sql
据我所知,使用a的"正确"方法TransactionScope是transactionScope.Complete();在退出using块之前始终调用.像这样:
using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadUncommitted }))
{
//...
//I'm using this as a NOLOCK-alternative in Linq2sql.
transactionScope.Complete();
}
Run Code Online (Sandbox Code Playgroud)
但是,我已经看到代码在没有它的情况下工作,甚至我学会了使用它的答案都 省略了它.所以我的问题是,它是否必须使用?
所以我的问题是,它是否必须使用?
Complete必须在COMMIT对事务进行更新时使用.否则,事务管理器将发出ROLLBACK和撤消所做的更改.
通过像您的示例一样的只读事务,我可以认为没有或没有重大差异Complete.在两种情况下,事务管理器发布的COMMIT或ROLLBACK具有相同的净效应,即释放事务所持有的锁和资源.
虽然不需要Complete在只读事务中调用,但它仍然是最佳实践恕我直言.考虑一下可怜的开发人员,他后来无意中将数据修改代码添加到您的事务块而不会Complete丢失.
| 归档时间: |
|
| 查看次数: |
1210 次 |
| 最近记录: |