Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

ASP.NET Web Forms e MySql Entity Framework:não há suporte para transações aninhadas


Você provavelmente encontrou este bug no MySQL Connector/NET .

O que aciona esse bug:
  1. Chamadas de código para execução da consulta A
  2. A transação 1 da consulta A foi iniciada
  3. A consulta A é executada e causa um erro no MySQL
  4. A transação 1 NÃO é revertida
  5. Chamadas de código para execução da consulta B
  6. A transação 2 da consulta B foi iniciada
  7. O MySQL Connector/NET lança a exceção

O bug é o ponto 4:a transação 1 é deixada em aberto após um erro (ou pelo menos o conector ainda está convencido de que foi deixado em aberto). Devido ao pool de conexões, o código que chama a consulta A e a consulta B podem ser completamente não relacionados. Além disso, se o tempo entre o ponto 4 e 5 for longo o suficiente, a transação é revertida, daí a raridade e aleatoriedade.

Infelizmente ainda não há correção pelo MySQL. A única solução que conheço é baixar o código-fonte do Connector/NET e corrigi-lo/construir você mesmo.