- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前对 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)。
感谢您的回复。
最佳答案
如果另一个方法在另一个事务内调用ProcessRequest
,这取决于您希望发生的情况:
public void SomeOtherMethod() {
using (TransactionScope ts = new TransactionScope()) {
// Another DB action
ProcessRequest();
// Yet another DB action
}
}
如果您希望 ProcessRequest
使用 SomeOtherMethod
创建的事务,请使用 TransactionScope.Required
。这是默认设置(当您调用它时,它仍然会创建一个事务,而无需在调用堆栈上创建另一个事务范围)。
如果您希望强制此方法始终使用自己的(新)事务,请使用 TransactionScope,RequiresNew
。
关于.net - TransactionScopeOption - 必需或 RequiresNew,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4629245/
我目前对 TransactionScope 对象的构造函数感到困惑。 假设我网站的用户可以订购产品。提交请求后,我会验证当前剩余数量,如果仍然大于零,我就会执行该请求。然后,最后我减少当前剩余数量。
在我刚接手的一个应用中发现了这一行,感觉没什么意义。 使用 (new TransactionScope(TransactionScopeOption.Suppress, new TimeSpan(1,
我有 3 个关于 TransactionScopeOption 的问题。Required 把我逼疯了,我无法在网上找到他们的答案。 A. 我很难思考什么时候我必须在现实中编写这段代码?为什么我不应该将
我想回滚名为“scope”的事务,但名为 scope2 的内部事务不应回滚。但是他们都回滚了!!!选项 TransactionScopeOption.Suppress 不起作用... 我已经启用了 D
我相信我理解 TransactionScopeOption.Suppress 和 TransactionScopeOption.Required 但很难理解 TransactionScopeOptio
这里发生了一些非常奇怪的事情。 我只是在我正在调试的一些遗留代码周围添加了一个事务范围,以确保我正在做的摆弄不会被提交。 这工作了两次,然后说: "The transaction manager ha
我正在尝试使用 LINQ TO SQL 在现有事务中执行具有未提交读取隔离级别的查询。如果我使用该选项从父事务中抑制此事务,那么我似乎失去了指定隔离级别的能力。在 LINQPad 中使用此代码: vo
在我的 .NET 代码中,在数据库事务中(使用 TransactionScope ),我可以包含一个带有 TransactionScopeOption.Suppress 的嵌套 block ,这确保嵌
我在使用带有 Entity Framework 和 System.Transactions.TransactionScope 的 Sql Server CE 4 来抑制部分事务时遇到问题。 下面的简化
我是一名优秀的程序员,十分优秀!