目前我对TransactionScope对象的构造函数有些困惑。
假设我的网站用户可以订购产品。在提交请求时,我会验证当前剩余数量,如果仍大于零,则执行请求。最后,我会减少当前剩余量。
整个过程都在使用.NET TransactionScope事务。
在阅读了几篇关于.NET TransactionScope对象的文章之后,我现在有点困惑该在TransactionScope的构造函数中使用哪种TransactionScopeOption值才更合适。
以下哪一项更适合上述情况:
public void ProcessRequest()
{
TransactionOptions transactionOptions = new TransactionOptions();
transactionOptions.IsolationLevel = IsolationLevel.Serializable;
using (TransactionScope currentScope = new TransactionScope(TransactionScopeOption.RequiresNew, transactionOptions)) {
// DB Query to verify if quantity is still greater than zero
// DB Query to request and decrement quantity
currentScope.Complete();
}
}
或者
public void ProcessRequest()
{
TransactionOptions transactionOptions = new TransactionOptions();
transactionOptions.IsolationLevel = IsolationLevel.Serializable;
using (TransactionScope currentScope = new TransactionScope(TransactionScopeOption.Required, transactionOptions)) {
// DB Query to verify if quantity is still greater than zero
// DB Query to request and decrement quantity
currentScope.Complete();
}
}
注意,上述只是我实际问题的过度简化。我只对这种情况下 TransactionScopeOption 的正确值感兴趣 (RequiresNew 或 Required)。
谢谢回复。