c# - 如何验证 TransactionScope 是否适用于 MySQL?
问题描述
我想添加读取未提交的隔离级别。我知道可以使用 SQL 语句。但我想尝试使用 TransactionScope,但我尝试了但没有在 MySQL 常规日志上获得任何隔离语句。问题 1 transactionscope 类是否适用于 MySQL。如果是,那么如何验证。
解决方案
我想添加读取未提交的隔离级别。我知道可以使用 SQL 语句。
执行此操作的“标准”方法是使用MySqlConnection.BeginTransaction
API:
using (var transaction = connection.BeginTransaction(IsolationLevel.ReadUncommitted))
{
// do stuff
transaction.Commit();
}
transactionscope 类是否与 MySQL 一起使用
是的,MySQL Connector/NET 可以支持TransactionScope
,但不支持分布式事务。连接器/NET 不支持带有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 不同,它完全支持分布式事务。
推荐阅读
- php - var_export 的格式输出评估文本变量(如果它对应于一种类型)
- python - 列表python的总和+从列表中删除字符串
- laravel - 登录后将变量作为会话数据传递
- javascript - 让 CKEditor 4 插件与封闭的 Angular 组件对话
- javascript - 如何在javascript中为旋转函数使用变量?
- javascript - 是否可以通过 PWA 设置警报?(构建定时器/闹钟应用程序)
- c# - 是否可以为整个执行路径提供特定于请求的类?
- node.js - 给定两个 mongodb Id 如何确定哪个更旧
- java - Cucumber 4 可选词?
- c# - EF Core 仅在属性为 true 时才包含列表