首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TransactionScope和DapperExtensions?

TransactionScope和DapperExtensions?
EN

Stack Overflow用户
提问于 2018-07-31 14:57:08
回答 2查看 482关注 0票数 1

我希望将涉及单个事务下的DapperExtensions函数的多个方法调用分组,以便在任何一个事务失败时都能回滚它们。

这涉及到对预先存在的函数的调用,其中一些函数

  • 使用DapperExtensions谓词和/或
  • 利用他们自己的联系。

答案需要允许谓词调用和单个事务下的多个连接。

我试过的

到目前为止,我已经找到了两种方法,TransactionScope和IDbConnection。

TransactionScope

代码语言:javascript
复制
using (var transactionScope = new TransactionScope())
{
      // Function calls here
     transactionScope.Complete();
}

虽然据我所知,这在.Net Core2.0中应该是可用的,但我使用的Dapper和/或DapperExtensions调用似乎并不支持它。运行此操作将导致以下错误:

代码语言:javascript
复制
 "Enlisting in Ambient transactions is not supported."

我浏览了关于这是否可能或将来是否可能的文档,但结果却是空的。

IDbTransaction

DapperExtensions的谓词函数似乎支持这一点,但到目前为止,我还没有找到跨多个连接使用相同事务的任何示例。一些较老的帖子明确指出,这是一种“基于连接的”事务处理方法,所以我不确定这是可能的。

我发现关于DapperExtensions的文档是非常精益的,所以如果有人可以向我指出一些关于它的函数一般如何处理事务的参考,那也是非常有用的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-31 15:51:37

这个问题是用System.Data.SqlClient v4.5修复的。

票数 1
EN

Stack Overflow用户

发布于 2021-08-09 10:59:58

你可以这样用它。

代码语言:javascript
复制
 using (var sqlConnection = new SqlConnection(configuration.GetConnectionString("DefaultConnection")))
                {
                    sqlConnection.Open();
                    using (var tx = sqlConnection.BeginTransaction())
                    {
                        var model = await sqlConnection.GetListAsync<T>(transaction:tx);
                        return model.ToList();
                    }              
                }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51616382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档