因为要把服务器搬到外网去运行,因为SQL事务要用到很多端口,很麻烦设置防火墙(公司内部网络原因,和网管沟通过了很难开放大量双向的端口)!!所以打算弃用SQL事务。我的网站有很多这样的事务代码,一个一个修改很麻烦,能不能有什么简单的办法关闭关闭TransactionScope事务功能? using (var scope = new TransactionScope(TransactionScopeOption.Required))
                {                    数据库操作代码...
                    scope.Complete();                }
            }

解决方案 »

  1.   

    客户端改为不直接操作数据库,通过WEBSERVICE或WCF传递操作请求。这样的话只要重写一下这个中间层就行了。在外网,直接操作数据库一般也是不允许的,安全考虑。
      

  2.   


    其实你使用了c/s数据库的客户端驱动,而开发出来的程序就是一个本地数据库程序。也就是说你当初就没有开发真正的c/s架构软件(这种软件的服务器端也应该是自己开发的业务服务器系统,而不是用现成的数据库系统)。只能重新编写所有软件。
      

  3.   

    数据库系统提供了客户端驱动,这样你的程序就可以在本地使用其驱动访问数据库系统。许多学生以为在学校学到了c/s软件设计,其实这是上当了。c/s软件应该是你自己开发c和s两端的系统,自己定义业务层通讯协议,而系统基于什么数据库根本是针对客户端无关的。
      

  4.   

    我的是ASP.NET (C#)不是C/S。
      

  5.   

    using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
    {
      bool isComplete = true;
      foreach(...)
      {
      if (XXX)
      {
      
      }
      else
      {
      isComplete = false;
      break;
      }
      }
      if (isComplete) scope.Complete();
    }
      

  6.   

    using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
    {
      bool isComplete = true;
      foreach(...)
      {
      if (XXX)
      {
      
      }
      else
      {
      isComplete = false;
      break;
      }
      }
      if (isComplete) scope.Complete();
    }