gpt4 book ai didi

c# - 尽管 TransactionScopeOption.Suppress 嵌套事务回滚

转载 作者:行者123 更新时间:2023-11-30 12:14:49 25 4
gpt4 key购买 nike

我想回滚名为“scope”的事务,但名为 scope2 的内部事务不应回滚。但是他们都回滚了!!!选项 TransactionScopeOption.Suppress 不起作用...

我已经启用了 DTC,并且正在使用 Visual Studio 2010 和 .net 4.0 以及 Microsoft SQl Server 2008。这里有什么问题???

using (SqlConnection conn = new SqlConnection(@"Data Source=.\DEVELOPER;Initial Catalog=TestDatenbank;Integrated Security=sspi"))
{

using (TransactionScope scope = new TransactionScope())
{

conn.Open();

SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;

cmd.CommandText = "UPDATE Orders SET ID='111'";
cmd.ExecuteNonQuery();


using (TransactionScope scope2 = new TransactionScope(TransactionScopeOption.Suppress))
{

SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = conn;

cmd1.CommandText = "UPDATE Orders SET OrderName='aaa'";
cmd1.ExecuteNonQuery();


scope2.Complete();
}


//scope.Complete();

}

}

非常感谢您的回答!

我终于工作了!!!!

using (SqlConnection conn = new SqlConnection(@"Data Source=.\DEVELOPER;Initial Catalog=TestDatenbank;Integrated Security=sspi"))
{

using (TransactionScope scope = new TransactionScope())
{

conn.Open();

SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;

cmd.CommandText = "UPDATE Orders SET ID='111'";
cmd.ExecuteNonQuery();

using (SqlConnection conn2 = new SqlConnection(@"Data Source=.\DEVELOPER;Initial Catalog=AdventureWorks;Integrated Security=sspi"))
{
using (TransactionScope scope2 = new TransactionScope(TransactionScopeOption.Suppress))
{

conn2.Open();

SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = conn2;

cmd1.CommandText = "UPDATE Henrik SET ID='111'";
cmd1.ExecuteNonQuery();


scope2.Complete();
}
}


//scope.Complete();

}

}

一件奇怪的事情是,当我删除行 scope2.Complete(); 时并替换//scope.Complete();范围.Complete();我预计会出现以下情况:

范围将被执行scope2 将回滚

但实际上:范围将被执行scope2也会被执行

有什么想法吗??????

最佳答案

我不确定,但原因可能是虽然您确实通过使用抑制来抑制任何环境事务,但您使用与外部范围相同的连接。因此连接已经参与了事务(外部事务),因此所有更改都绑定(bind)到此。内部范围内不存在环境事务这一事实可能不会产生任何影响。换句话说,抑制范围不会在这里做任何事情。

您可以尝试使用 RequiresNew 和新连接在 TransactionScope 中运行内部逻辑。

关于c# - 尽管 TransactionScopeOption.Suppress 嵌套事务回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8850453/

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