小巧玲珑和交易范围?
Posted
技术标签:
【中文标题】小巧玲珑和交易范围?【英文标题】:Dapper & TransactionScope? 【发布时间】:2011-10-15 05:10:01 【问题描述】:我刚开始玩 Dapper。到目前为止,我喜欢它。 dapper 不能与TransactionScope
一起使用吗?我注意到即使我从不调用TransactionScope.Complete
,我的更改仍然会提交到数据库。如果现在不支持 TransactionScope,那么将来是否有计划支持它?如果没有那么你必须使用传统的事务管理(System.Transactions.Transaction)吗?
更新:我刚刚通过 Twitter 与 Sam 进行了交谈。它应该工作。我会在明天早上(在工作中)更新它的详细信息,看看是否有人能弄清楚为什么我的更改仍然提交到数据库,即使我从未调用过完成。
【问题讨论】:
【参考方案1】:这完全是我的错,没有完全理解 transactionscope。除非您在事务范围内打开连接,否则连接不会自动加入事务范围:
自动入伍
using (var scope = new TransactionScope())
con.Open();
//update/delete/insert commands here
...
scope.Complete();
手动登记
con.Open();
using (var scope = new TransactionScope())
con.EnlistTransaction(Transaction.Current);
//update/delte/insert statements here
...
scope.Complete();
详情请见:Details
【讨论】:
使用自动,我得到“不支持在环境事务中登记。” ... 可能是 .net 核心问题。 @IanWarburtoni 认为它可能是。见这里:github.com/dotnet/corefx/issues/23927 你不应该调用 scope.Complete() 吗? ***.com/a/53698092/3606250 @drizin 是的,但这只是一个小代码 sn-p 不是一个完整的例子。以上是关于小巧玲珑和交易范围?的主要内容,如果未能解决你的问题,请参考以下文章