为了账号安全,请及时绑定邮箱和手机立即绑定

如何验证 TransactionScope 是否适用于 MySQL?

如何验证 TransactionScope 是否适用于 MySQL?

C#
慕哥9229398 2021-11-14 17:02:06
我想添加读取未提交的隔离级别。我知道可以使用 SQL 语句。但我想尝试使用 TransactionScope 并且我尝试过但没有在 MySQL 常规日志上获得任何隔离语句。问题 1 事务范围类是否适用于 MySQL。如果是,那么如何验证。
查看完整描述

1 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

我想添加读取未提交的隔离级别。我知道可以使用 SQL 语句。


执行此操作的“标准”方法是使用MySqlConnection.BeginTransactionAPI:


using (var transaction = connection.BeginTransaction(IsolationLevel.ReadUncommitted))

{

    // do stuff

    transaction.Commit();

}

事务范围类是否适用于 MySQL


是的,MySQL Connector/NET 可以支持TransactionScope,但不支持分布式事务。这是一个已知的问题是连接器/ NET不支持XA事务TransactionScope。


如果要使用TransactionScope,则 MySQL Connector/NET 应继承其隔离级别:


var txOptions = new System.Transactions.TransactionOptions();

txOptions.IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted;


using(var transaction = new TransactionScope(TransactionScopeOption.Required, txOptions))

using (var connection = new MySqlConnection("... connection string ..."))

{

    connection.Open();

    // ...

    transaction.Complete();

}

如果您需要使用 支持真正的分布式事务TransactionScope,则切换到MySqlConnector作为您的 ADO.NET 驱动程序。与 Connector/NET 不同,它完全支持分布式事务。


查看完整回答
反对 回复 2021-11-14
  • 1 回答
  • 0 关注
  • 193 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信