这个问题在这里已经有了答案:VisualStudio2012-Can'tfindSystem.Transactionsassemblyin.NET4.5framework(2个答案)关闭6年前。这是一个带有VisualStudio2013的ASP.NetWeb应用程序。该解决方案由多个项目组成。我在一个库项目中有代码,该项目使用System.Transactions,并且它运行良好了几个月。今天,我在Web应用程序项目的代码中添加了相同的usingSystem.Transactions,但失败并显示以下错误消息:Thetypeornamespacename'Transactions'd
使用EntityFramework6.0.0,我在关闭事务时看到异常。我们一直在对表进行并发更改时遇到问题,所以我将其包装在一个事务中,现在我在回滚时遇到异常。代码:publicLockInfogetSharedLock(stringjobid){using(varmyDbContext=newMyDbContext()){using(vartransaction=myDbContext.Database.BeginTransaction()){try{this.logger.log("Attemptingtogetsharedlockfor{0}",jobid);varmylocks
查看它,我验证了例如在以下情况下“myInt”的值没有回滚intmyInt=10;using(TransactionScopescope=newTransactionScope(TransactionScopeOption.RequiresNew)){myInt=20;Transactiont=Transaction.Current;t.Rollback();}所以我开始思考“TransactionScope是否只回滚与数据库相关的事件?或者事务可以管理其他事情但我不知道这些?” 最佳答案 当前事务仅影响特定对象,称为资源管理器。这
当我提交交易时,我得到:System.Threading.SemaphoreFullException:Addingthespecifiedcounttothesemaphorewouldcauseittoexceeditsmaximumcount.atSystem.Threading.Semaphore.Release(Int32releaseCount)atSystem.Data.ProviderBase.DbConnectionPool.PutNewObject(DbConnectionInternalobj)atSystem.Data.ProviderBase.DbConnec
由于一些限制,我无法使用EntityFramework,因此需要手动使用SQL连接、命令和事务。在为调用这些数据层操作的方法编写单元测试时,我偶然发现了一些问题。对于单元测试,我需要在事务中执行它们,因为大多数操作本质上都在更改数据,因此在事务之外执行它们是有问题的,因为这会更改整个基础数据.因此,我需要围绕这些放置一个事务(最后没有触发提交)。关于这些BL方法的工作原理,现在我有2种不同的变体。一些内部有交易本身,而另一些则根本没有交易。这两种变体都会导致问题。分层事务:在这里我得到错误,DTC由于超时取消了分布式事务(尽管超时设置为15分钟并且它只运行了2分钟)。只有1个事务:当我
我已经见过几次这种模式了:boolsuccess=false;try{DoSomething();success=true;}finally{if(!success)Rollback();}我一直在想:为什么这比使用catch进行回滚更好?try{DoSomething();}catch{Rollback();throw;}这两种确保更改在失败时回滚的方法有什么区别? 最佳答案 我在这里发布了一些代码,即使它与问题并没有真正相关(稍后会删除)。有了这个程序:usingSystem;namespacetestcs{classProgr
我正在尝试将文件写入磁盘以及通过存储过程将数据插入数据库,所有这些都在原子事务中进行。即,如果这两个操作中的任何一个失败(文件无法写入磁盘或存储过程失败),我什么都不做,只是将异常抛回给调用者。关于如何最好地处理文件写入和数据库插入的原子事务有什么建议吗?附加信息:我在MSSQLServer中使用带有存储过程的C#.NET,但不一定针对这些技术量身定制的通用解决方案也很好。更新:在查看了以下所有答案并研究了其他答案后,我写了thispost关于如何使用3种不同的方法解决这个问题。 最佳答案 你需要使用新的TxF,Vista、Wind
所以我有一个WCF服务,其中有一个Process()方法。此方法从一个表中读取一个字节数组(一个文件),基本上将该文件中的数据放入多个表中。它只是遍历每一行。它在生产环境中一个月以来运行良好。现在突然间,它间歇性地抛出这个错误:System.InvalidOperationException:Thetransactionassociatedwiththecurrentconnectionhascompletedbuthasnotbeendisposed.ThetransactionmustbedisposedbeforetheconnectioncanbeusedtoexecuteSQ
我很困惑。从表面上看,在C#中执行事务似乎简单的。从这里开始:http://docs.oracle.com/cd/B19306_01/win.102/b14307/OracleTransactionClass.htmstringconstr="UserId=scott;Password=tiger;DataSource=oracle";OracleConnectioncon=newOracleConnection(constr);con.Open();OracleCommandcmd=con.CreateCommand();cmd.CommandText="SELECTCOUNT(*)
我正在开发一个与SQLServer2005数据库通信以执行某些存储过程的应用程序。我的客户要求所有事务都在C#端进行管理,而不是由SQLServer管理,因此我在访问数据库时使用System.Transactions.TransactionScope。但是,我刚刚看到System.Transactions.Transaction数据类型,我很困惑……每种类型的主要优点/缺点是什么?我应该使用哪一个?请注意,我还必须使用EnterpriseLibrary的数据访问应用程序block。 最佳答案 来自msdn:TheTransactio