asp.net 事物处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net 事物处理相关的知识,希望对你有一定的参考价值。

      第一次写博客,因为只是小白,所以现在只是把博客做为一个笔记本以加深印象和以后方便查找。

  今天因为需要必须使用这种事物,也就是在同一个方法中对数据库进行多次操作,并且不能放在一个存储工程进行一次执行。在网上查到了这个方法,很汗颜的是我只用这个方式实现了我的目的,具体原理还是不清楚。哈哈,总之会用了。使用这种事物的时候要注意几个地方:

  1.必须引用命名空间System.EnterpriseServices
  2.ContextUtil.SetComplete();//提交事务
  3.ContextUtil.SetAbort();//回滚事务
  4.ServiceDomain.Leave();  

    前边说了,这个事物我只局限于达到了我的目的。所以提交和回滚两个方法很容易理解,我没有注意到ServiceDomain.Leave(),不知道起什么作用。我以为已经实现了回滚,正高兴的时候,在查询的时候linq报错了。经过查看发现,数据根本没有存储到数据库。当把ServiceDomain.Leave()添加上后才正真的实现了我的目的。

using System.EnterpriseServices;   

private void GetImport(HttpContext context)
{
ServiceConfig config = new ServiceConfig();
config.Transaction = TransactionOption.Required;
ServiceDomain.Enter(config);
string resultJson = "";
try
{
string sql1="insert into testTable1(name,sex,age) value(‘张三‘,‘男‘,23)";
SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(),CommandType.Text,sql1);

string sql2="insert into testTable2(company,name,tell) value(‘阿里巴巴‘,‘马云‘,‘13266666666‘)";
SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(),CommandType.Text,sql2);

string sql3="insert into testTable3(project,adress,tell) value(‘xx项目‘,‘重庆,‘15988888888‘)";
SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(),CommandType.Text,sql3);

resultJson="添加成功!";
ContextUtil.SetComplete();//提交事务
}
catch (Exception e)
{
resultJson = e.Message;
ContextUtil.SetAbort();//回滚事务
}
finally
{
ServiceDomain.Leave();
}
context.Response.Write(resultJson);
}

 

以上是关于asp.net 事物处理的主要内容,如果未能解决你的问题,请参考以下文章

什么是 ASP.NET?

七天学会ASP.NET MVC ——ASP.Net MVC 数据处理

ASP.NET 网站在部署时看起来不同

ASP.NET MVC 2 - 组织

ASP.NET 中的全局错误处理

ASP.NET:URI 处理