c# – 嵌套事务回滚虽然TransactionScopeOption.Suppress
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 嵌套事务回滚虽然TransactionScopeOption.Suppress,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2082字,纯文字阅读大概需要3分钟。
内容图文
我想回滚一个名为“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(); with scope.Complete();我期待以下内容:
范围将被执行
scope2将回滚
但实际上:
范围将被执行
scope2也将被执行
有任何想法吗???????
解决方法:
我不确定,但原因可能是虽然您通过使用suppress来抑制任何环境事务,但您使用与外部范围相同的连接.因此,连接已经参与了事务(外部事务),因此所有更改都与此绑定.内部范围中不存在环境事务的事实可能没有区别.换句话说,抑制范围在这里不会做任何事情.
您可以尝试使用RequiresNew和新连接在TransactionScope中运行内部逻辑.
内容总结
以上是互联网集市为您收集整理的c# – 嵌套事务回滚虽然TransactionScopeOption.Suppress全部内容,希望文章能够帮你解决c# – 嵌套事务回滚虽然TransactionScopeOption.Suppress所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。