TransactionScope 的错误解决方法

原创 2007年09月14日 13:44:00

 TransactionScope  是.net 提供的可提升事务环境,开发软件的时候非常方便,但是在大数据量处理的时候,会莫名我出错,检查代码没有任何的错误

解决这个错误的方法:不用TransactionScope  ,自己写一个用MSDTC的事务就可以了。

我的项目里面用的就是这TransactionScope  ,但是在导入数据的时候,超过1万条记录(3张表)的时候,系统就报错了。数据在7000条的时候,没有任何问题。没有解决办法。

最好只好改变思路,不使用TransactionScope  ,参照微软的COM+1.5的帮助,写了下面的。插入5万条记录的时候,包括从客户端传到服务器端共花了7分钟,没有任何问题。

在.net 2.0的环境下,建议大家不好用TransactionScope  。

    public enum TransactionScopeOption
    {
        Suppress = TransactionOption.NotSupported,
        Required = TransactionOption.Required,
        RequiresNew = TransactionOption.RequiresNew
    }

    public class TransactionScope : IDisposable
    {
        bool m_Consistent = false;

        public void Complete()
        {
            if (m_Consistent == false)
            {
                m_Consistent = true;
                ContextUtil.MyTransactionVote = TransactionVote.Commit;
            }
            else
            {
                throw new InvalidOperationException("Cannot call Complete() more than once");
            }
        }
        public TransactionScope()
            : this(TransactionScopeOption.Required)
        { }

        public TransactionScope(TransactionScopeOption scopeOption)
        {
            ServiceConfig config = new ServiceConfig();
            config.Transaction = (TransactionOption)scopeOption;
             ServiceDomain.Enter(config);
            ContextUtil.MyTransactionVote = TransactionVote.Abort;
        }

        public void Dispose()
        {
            if (m_Consistent == false && ContextUtil.IsInTransaction)
            {
                ContextUtil.MyTransactionVote = TransactionVote.Abort;
            }
            ServiceDomain.Leave();
            m_Consistent = false;
        }
    }

TransactionScope使用(三)——TransactionScopeOption的使用

TransactionScopeOpetion有三个选项,分别是:1.  Required(默认):如果存在环境事务,那么就加入其中,如果不存在就创建新事务。如果加入事务那么只有在环境事务提交后才算提...

使用TransactionScopeOption 管理事务流

可通过调用一个方法来嵌套事务范围,该方法在使用其自己范围的方法中使用 TransactionScope,下面示例中的 RootMethod 方法就是前者这样的方法。 void RootMetho...

关于TransactionScope出错:“与基础事务管理器的通信失败”的解决方法总结

来自:http://www.cnblogs.com/enquan/archive/2008/07/31/1257622.html  遇到此问题先需确认几个问题:        1)MS DTC...

rsync 常见错误与解决方法整理

  • 2015年08月27日 10:41
  • 14KB
  • 下载

Unity3D 错误nativeVideoFrameCallback的解决方法

欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌...

Automation 错误解决方法

  • 2015年01月09日 20:24
  • 567B
  • 下载

使用Putty登录Ubuntu后得到"Server refused our key"错误的一种解决方法

说来很惭愧,这个问题给我折腾了快一个月了,今天还是多写了一个搜索词才联想到这个问题的解决方法的。   在网上可以收到很多这方面的东西,但是我都尝试后,还是没能解决我遇到的问题。但是其实很简单的,症结...
  • Neils03
  • Neils03
  • 2012年03月10日 11:52
  • 5398
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TransactionScope 的错误解决方法
举报原因:
原因补充:

(最多只允许输入30个字)