【发布时间】:2015-08-31 09:53:33
【问题描述】:
我决定尝试使用TransactionScope,而不是SqlTransaction 类。
以下是我的代码,包裹在TransactionScope中:
using (var transaction = new System.Transactions.TransactionScope())
{
using (MySqlCommand cmd = new MySqlCommand(sql, connection))
{
if (listParameters != null && listParameters.Count > 0)
{
foreach (string currentKey in listParameters.Keys)
{
cmd.Parameters.Add(new MySqlParameter(currentKey, GetDictionaryValue(listParameters, currentKey)));
}
}
using (MySqlDataReader reader = cmd.ExecuteReader())
{
dtResults.Load(reader);
}
}
transaction.Complete();
}
代码有效,但是我在任何时候都没有将MySqlCommand cmd 对象与事务绑定。这是个问题吗?
【问题讨论】:
-
如果你不使用线程,我看不出有什么问题:)
-
@Jan'splite'Kondelík 我最担心的是,当我使用 SqlTransaction 对象时,我曾经专门将此对象传递给 MySqlCommand 对象的参数。但是有了这个新的作用域对象,就没有这些了。交易是否按预期执行,所以?
-
正如 GSerg 在回答中所写,我忽略了你没有创建连接(+1 到他的回答;))
标签: c# mysql sql database transactionscope