【发布时间】:2011-06-05 11:32:37
【问题描述】:
我目前对 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)。
感谢您的回复。
【问题讨论】:
标签: .net transactions constructor transactionscope