我想将涉及DapperExtensions函数的多个方法调用分组到一个事务中,以便在任何一个失败时都可以回滚它们。
这涉及调用预先存在的函数,其中一些函数
-
使用DapperExtensions谓词,和/或
-
利用他们自己的关系。
答案需要同时考虑谓词调用和单个事务下的多个连接。
我试过的
到目前为止,我已经找到了两种方法,TransactionScope和IDbConnection。
交易范围
using (var transactionScope = new TransactionScope())
{
// Function calls here
transactionScope.Complete();
}
尽管据我所知,这应该在.Net Core2.0中提供,但我使用的Dapper和/或DapperExtensions调用似乎不支持它。运行此命令会导致以下错误:
"Enlisting in Ambient transactions is not supported."
我浏览了关于这是否可能或将永远可能的文档,但结果是空的。
IDB事务
DapperExtensions的谓词函数似乎支持这一点,但到目前为止,我找不到在多个连接中使用同一事务的任何示例。一些旧的文章特别指出这是一种“基于连接”的事务处理方法,所以我不确定这是否可能。
我发现关于DapperExtensions的文档非常简洁,所以如果有人能给我介绍一些关于其函数如何处理一般事务的参考,那也会非常有帮助!