当前位置: 首页 > 知识库问答 >
问题:

使用Entity Framework 6和Devart provider在Mysql上执行事务回滚时连接关闭

宰父涵忍
2023-03-14

我正在研究一个项目,该项目使用实体框架6 RC连接到使用Devart提供程序(V7.8.322.0)的Mysql数据库。

我们自己不会开始任何交易。

这是异常的stacktrace:

    System.InvalidOperationException: Connection must be opened.
      at Devart.Common.Utils.CheckConnectionOpen(IDbConnection connection)
   at Devart.Data.MySql.MySqlConnection.Rollback()
   at Devart.Data.MySql.MySqlTransaction.Dispose(Boolean disposing)
   at System.Data.Common.DbTransaction.Dispose()
   at System.Data.Entity.Core.EntityClient.EntityTransaction.Dispose(Boolean disposing)
   at System.Data.Common.DbTransaction.Dispose()
   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
   at System.Data.Entity.Core.Objects.ObjectContext.SaveChangesToStore(SaveOptions options, IDbExecutionStrategy executionStrategy)
   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass28.<SaveChanges>b__25()
   at System.Data.Entity.Infrastructure.DefaultExecutionStrategy.Execute[TResult](Func`1 operation)
   at System.Data.Entity.Core.Objects.ObjectContext.SaveChanges(SaveOptions options)
   at System.Data.Entity.Internal.InternalContext.SaveChanges()
   at System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
   at System.Data.Entity.DbContext.SaveChanges()
   at Nallian.Dal.MySql.NallianDbContext.Nallian.Data.Common.Contracts.IUnitOfWork.SaveChanges() in c:\TFS2012\Nallian\Main\Nallian.Dal.MySql\NallianDbContext.cs:line 117
   ...

更奇怪的是,当我使用devart dbmonitor工具时,我看到事务被提交。

我还将我的测试项目指向SqlServer Express,它在那里工作得很好。所以我想我得开始看看Devart提供商了。

共有1个答案

高建本
2023-03-14

修复了与如果连接已经关闭时回滚事务时“连接必须打开”错误相关的bug。

发布了新版本的dotConnect for MySQL8.1。它可以从这里下载(试用版)或从注册用户区(仅适用于有活动订阅的用户)。欲了解更多信息,请参阅我们的论坛。

 类似资料:
  • 问题内容: 我需要使MySQL服务器在客户端断开连接后立即回滚事务,因为每个客户端可以同时工作。可以 在客户端A 上重现这些问题(使用innodb表类型) : 在客户B上: 我已经设置了MySQL的服务器选项,并且在两个客户端上都使用了mysql的客户端。我在网络上使用一台服务器和两个客户端进行了尝试。下线后,我物理断开了网络连接(拔下电缆)。我需要使其他客户端能够立即在事务上使用(锁定它,更新它

  • 我以前在某人的代码里发现过这个。正如标题所说,调用是否将连接释放回池中? 样品 更新

  • 问题内容: 如果在mysql命令列表中发生任何错误,是否可以自动回滚? 例如类似以下内容的东西: 现在,在执行我希望整个交易失败,因此我应该 不 看到值1在myTable的。但是不幸的是,即使事务有错误,该表也仍使用values1进行伪造。 任何想法,我如何使其回滚?(再次出现任何错误)? 编辑-从DDL更改为标准SQL 问题答案: 您可以使用13.6.7.2。DECLARE … HANDLER语

  • 我们使用的是spring Boot2,在集成测试中,我们需要在事务中手动执行一些代码,在事务结束时和断言之后,我们希望回滚该事务。 我们使用显式定义的事务而不是@Transactional,因为有时我们需要在Test2事务中执行。 你能告诉我如何在我们的例子中使用回滚来回滚这两个事务吗?这是我们维护的较老的代码,所以如果有可能在引导2中做得更好,我将非常感谢任何建议。我们只需要在一个测试中执行2个

  • 我在这里尽量简明扼要。我已经研究了网络上报告的许多类似问题,并根据这些问题评估了我的问题。但是,这并没有解决我的问题。所以我终于把这个放上去了。 我有一个带有默认值的spring注释的事务性服务(在实现的类方法上进行了注释)。该服务通过直接调用mybatis映射器方法(在服务中自动连线)来执行一些插入(在循环中)和无参数存储过程调用。 我在Tomcat和驱动程序管理器连接单元测试中使用JNDI连接

  • 问题内容: 在Hibernate中,当我在事务中有一个对象,然后回滚它时,保存的对象仍保留在DB中。奇怪,因为使用or 方法不会发生此问题,而只会使用。 这是我正在使用的代码: 这是 HibernateUtil 类(只是涉及的函数,我保证该方法能正常工作- 有一个Interceptor处理程序,但现在不重要了): 谢谢 问题答案: 检查数据库是否支持回滚,即是否使用的是InnoDB表而不是MyIS