Я использую MySQL в качестве своей базы данных, и я хочу использовать транзакцию, чтобы убедиться, что все в порядке в случае возникновения ошибки. Но Rollback()
и Commit()
не работают должным образом.
Сначала я использовал Dapper, мне показалось, что проблема была в Dapper, и я перестал его использовать, но результат тот же.
Запись, которую я пытаюсь вставить, вставляется ДАЖЕ, ЕСЛИ код выдает исключение.
var mysql = new MySqlConnection($"server=127.0.0.1;uid=root;pwd=PASSWORD;database=DBNAME;port=3306;default command timeout=0;");
await mysql.OpenAsync();
using (var tx = mysql.BeginTransaction(System.Data.IsolationLevel.ReadCommitted))
using (var command = mysql.CreateCommand())
{
try
{
command.Transaction = tx;
command.CommandText = "INSERT INTO tablename (field1, field2) " +
"VALUES ('value1', 0)";
command.ExecuteNonQuery();
throw new Exception(); // <--- THROWING EXCEPTION .
tx.Commit();
}
catch (Exception ex)
{
tx.Rollback();
}
}