我希望将涉及单个事务下的DapperExtensions函数的多个方法调用分组,以便在任何一个事务失败时都能回滚它们。
这涉及到对预先存在的函数的调用,其中一些函数
答案需要允许谓词调用和单个事务下的多个连接。
我试过的
到目前为止,我已经找到了两种方法,TransactionScope和IDbConnection。
TransactionScope
using (var transactionScope = new TransactionScope())
{
// Function calls here
transactionScope.Complete();
}虽然据我所知,这在.Net Core2.0中应该是可用的,但我使用的Dapper和/或DapperExtensions调用似乎并不支持它。运行此操作将导致以下错误:
"Enlisting in Ambient transactions is not supported."我浏览了关于这是否可能或将来是否可能的文档,但结果却是空的。
IDbTransaction
DapperExtensions的谓词函数似乎支持这一点,但到目前为止,我还没有找到跨多个连接使用相同事务的任何示例。一些较老的帖子明确指出,这是一种“基于连接的”事务处理方法,所以我不确定这是可能的。
我发现关于DapperExtensions的文档是非常精益的,所以如果有人可以向我指出一些关于它的函数一般如何处理事务的参考,那也是非常有用的!
发布于 2018-07-31 15:51:37
这个问题是用System.Data.SqlClient v4.5修复的。
发布于 2021-08-09 10:59:58
你可以这样用它。
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();
}
}https://stackoverflow.com/questions/51616382
复制相似问题