gpt4 book ai didi

C#/WCF TransactionScopeOption.必需

转载 作者:太空宇宙 更新时间:2023-11-03 14:02:33 27 4
gpt4 key购买 nike

我有 3 个关于 TransactionScopeOption 的问题。Required 把我逼疯了,我无法在网上找到他们的答案。

A. 我很难思考什么时候我必须在现实中编写这段代码?为什么我不应该将 DoSomething2() 放在 TransactionScope4 之外,放在 TransactionScope3 中?
B. 在这之后:TransactionScope4.Complete(),TransactionScope3 也是 Complete 因为它是同一个 TransactionScope,对吧?
C. 在 WCF 中,当我在客户端中使用 TransactionScope 并在其中调用某些服务的方法时,每个方法都使用我在客户端中创建的 TransactionScope 或创建新的?为什么要创建新的?如果该方法创建新方法,这就是属性:TransactionAutoComplete 存在的原因吗?

using (TransactionScope TransactionScope3 = new TransactionScope())
{
Service1.DoSomething1();
using (TransactionScope TransactionScope4 = new TransactionScope(TransactionScopeOption.Required))
{
Service1.DoSomething2();
TransactionScope4.Complete();
}
TransactionScope3.Complete();
}

最佳答案

记录了一个关键句子here :

The actual work of commit between the resources manager happens at the End Using statement if the TransactionScope object created the transaction. If it did not create the transaction, the commit occurs whenever Commit is called by the owner of the CommittableTransaction object.

所以要回答问题 B,您对 TransactionScope4.Complete() 的调用不会提交事务,因为该 TransactionScope 实例会重新使用 TransactionScope3 的事务。

要回答C,如果您指出 WCF 服务需要一个事务,那么如果客户端上已经创建了一个现有的 TransactionScope,那么 WCF 将不会启动一个新的事务(并且它出于与上述相同的原因,服务调用结束时不会提交)。但是,如果客户端没有打开的 TransactionScope,则 WCF 将启动一个新的,并在服务调用结束时自动提交或回滚。

关于C#/WCF TransactionScopeOption.必需,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10342266/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com