我正在使用“TransactionScope”,我只需要在C#代码中执行一些DML,我已成功完成。我需要查明交易的状态是什么,即交易是否成功完成?因为根据交易状态,如果交易完成则我需要执行重定向到另一个页面,否则如果交易未成功完成则我需要在页面上显示错误。我想在以下之后重定向:-scope.Complete();scope.Dispose();请在这方面帮助我。 最佳答案 如果你visittheMSDNpage对于TransactionScope,您会发现这个有据可查的示例:try{//CreatetheTransactionSco
我的应用程序中有一次出现以下错误。ThisSQLTransactionhascompleted;itisnolongerusableStackTrace附在下面–它说明了ZombieCheck和Rollback。代码中有什么错误?注意:此错误只出现一次。更新来自MSDN-SqlTransaction.RollbackMethodARollbackgeneratesanInvalidOperationExceptioniftheconnectionisterminatedorifthetransactionhasalreadybeenrolledbackontheserver.来自Zom
这是我的交易范围源代码的当前架构。第三个插入抛出一个.NET异常(不是SQL异常)并且它没有回滚前两个插入语句。我做错了什么?编辑:我从insert2和insert3中删除了try/catch。我还从insert1try/catch中删除了异常处理实用程序并放置了“throwex”。它仍然没有回滚事务。编辑2:我在Insert3方法中添加了try/catch,并在catch语句中添加了一个“throw”。它仍然没有回滚事务。更新:根据我收到的反馈,“SqlHelper”类使用SqlConnection对象建立与数据库的连接,然后创建一个SqlCommand对象,将CommandType
我正在使用C#和ADO.Net以及TransactionScope在ASP.Net应用程序中运行事务。此事务应该跨多个表保存一些数据,然后向订阅者发送电子邮件。问题:当它包含对在SQLServer2014中有自己的事务的存储过程的调用时,它是否是TransactionScope的有效使用,或者我应该删除SQL事务语句,即begintran、committran和rollbacktran语句来自在此TransactionScope中调用的存储过程>?这个场景的C#代码和存储过程的T-SQL代码都在下面提到。使用TransactionScope的C#代码:try{using(Transac
我想了解在EntityFramework(w/SqlServer2008)上使用TransactionScopeOption.RequiresNew的权衡/缺点是什么,我们不应该总是使用RequiresNew的原因是什么。问候。 最佳答案 您应该使用Required而不是RequiresNew。RequiresNew意味着每个操作都将使用一个新的事务,即使已经存在一个包含的事务范围。这肯定会导致僵局。即使使用Required,TransactionScope也存在另一个严重问题,即它默认创建一个Serializable事务,这是一个
我们的团队遇到了一个问题,表现为:TheunderlyingproviderfailedonEnlistTransaction;Cannotaccessadisposedobject.Objectname:'Transaction'.它似乎在我们开始使用TransactionScope时就出现了处理我们应用程序的事务。堆栈跟踪的顶部被捕获为:atSystem.Data.EntityClient.EntityConnection.EnlistTransaction(Transaction transaction)atSystem.Data.Objects.ObjectContext.En
我对TransactionScope类很好奇。在大多数情况下,我假设它是用于数据库连接(这就是我用它的目的)。我的问题是,您能否将任何代码放入TransactionScope的usingblock中以使其具有事务性?MS文档对此并不清楚。如果它可以用于使除数据库连接之外的代码成为事务性的,那么支持哪些代码?如果它可以使System.IO.File操作具有事务性,这对我来说似乎很疯狂。 最佳答案 TransactionScope不仅适用于数据库。每个实现IEnlistmentNotification接口(interface)的组件都可
我有一些代码的工作方式类似于TransactionScope的建议使用,但具有环境连接而不是环境事务。是否可以通过现有连接使用TransactionScope对象,或者.Net框架中是否有用于此目的的替代方法? 最佳答案 其实有一个方法。connection.EnlistTransaction(Transaction.Current)它有效,并且如果没有必要它不会将事务提升为分布式(与文档所说的相反)HTH 关于c#-有没有办法将TransactionScope与现有连接一起使用?,我们
我想在一个事务中用新记录替换数据库中的现有记录。使用TransactionScope,我有using(varscope=newTransactionScope()){db.Tasks.DeleteAllOnSubmit(oldTasks);db.Tasks.SubmitChanges();db.Tasks.InsertAllOnSubmit(newTasks);db.Tasks.SubmitChanges();scope.Complete();}我的程序抛出System.InvalidOperationException:Cannotaddanentitythatalreadyexis
这个问题在这里已经有了答案:HowtowriteatransactiontocoverMovingafileandInsertingrecordindatabase?(4个答案)关闭5年前。我一直在使用TransactionScope处理数据库,感觉不错。我正在寻找的是以下内容:using(varscope=newTransactionScope()){//Dosomethingwithafewfiles...scope.Complete();}但显然这是行不通的——如果有20个文件,并且第9个文件发生异常,所有前面的8个都保持已更改,其余未更改--不执行回滚。那么,为文件实现类似范围