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出错问题

TransactionScope 是.net 提供的可提升事务环境,开发软件的时候非常方便,但是在大数据量处理的时候,会莫名我出错,检查代码没有任何的错误 解决这个错误的方法:不用Transactio...
  • huayang912
  • huayang912
  • 2010年04月06日 22:30
  • 1717

TransactionScope的正确用法

前一阵贴了一个关于transactionscope的贴子,以为是MS的BUG。后来经过认真仔细的调试,才找到原因。原来的代码本身是没有没问题的。只是关于事务资源的处理放错了地方。正确的写法应该如下如果...
  • greystar
  • greystar
  • 2006年11月01日 10:21
  • 29336

C# 事务异常TransactionScope处理

1、异常信息为:"MSDTC on server '{Server Name}' is unavailable."。      解决方案:我的电脑--右键管理--服务--启动Distri...
  • shumixys
  • shumixys
  • 2016年04月27日 19:50
  • 204

EntiryFramework中事务操作(二)TransactionScope

一、EntityFramework事务操作之TransactionScope TransactionScope 位于using System.Transactions;命名空间下,需要在引用中手动加...
  • u011127019
  • u011127019
  • 2016年12月30日 11:08
  • 1405

解决.NET使用TransactionScope,操作多个oracle数据库时报6107错误

这几天想使用MS Enterprise Library3.1做一个持久化层包装,想使用MS的TransactionScope解决多数据库事务问题,我使用的是Oracle,但调试代码时,打开一个数据库操...
  • aoyo
  • aoyo
  • 2007年11月15日 18:07
  • 2382

TransactionScope使用(四)——超时和隔离级别设置

事务超时设置可以通过TransactionOptions对象设置Timeout后作为参数在创建TransactionScope的时候传进去设置事务的超时。如果设置为0表示不限制时间,这种情况最好在调试...
  • shellwin
  • shellwin
  • 2010年08月28日 15:07
  • 3227

C#中回滚TransactionScope的使用方法和原理

TransactionScope只要一个操作失败,它会自动回滚,Complete表示事务完成 实事上,一个错误的理解就是Complete()方法是提交事务的,这是错误的,事实上,它的作用的表...
  • wangxiaojia42121
  • wangxiaojia42121
  • 2016年11月24日 16:14
  • 5516

.net下跨数据分布式事务的处理办法TransactionScope

KB-.NET 2.0 分散式交易新利器---TransactionScope 转载地址: http://blog.darkthread.net/blogs/darkthreadtw/archi...
  • breadjyh
  • breadjyh
  • 2014年06月05日 14:29
  • 609

transactionscope

在.net1.1的时代,还没有TransactionScope类,因此很多关于事务的处理,都交给了SqlTransaction和 SqlConnection,每个Transaction是基于每个Con...
  • zzy7075
  • zzy7075
  • 2015年10月16日 14:52
  • 1073

TransactionScope线程安全问题整理

一、关于TransactionScope 1.在使用事务操作是,当程序中存在多个EF上下文,很多时候都是使用TransactionScope 2.TransactionScope使用简单,同一个事...
  • u011127019
  • u011127019
  • 2017年01月17日 13:23
  • 1165
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TransactionScope 的错误解决方法
举报原因:
原因补充:

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