【发布时间】:2018-01-26 09:20:36
【问题描述】:
我如何在 Dapper C# 中使用事务。 我的问题是我需要锁定一个表,所以我使用 BeginTransaction,我执行其他事务,直到我完成这些事务,我可以使用我向您展示的代码进行提交。它可以做到,但是当我同时收到 2 笔交易时,一笔交易并不能很好地关闭连接。谢谢。
我想这样做,但要使用 dapper。
public int UpdateStan(PosDTO posParams)
{
int result = cnn.Execute(new Templates.Queries.upDateStan().TransformText(), new
{
id_merchant = posParams.idMerchant
}, transaction);
transaction.Commit();
cnn.Close();
cnn.Dispose();
return result;
}
public BatchStanDTO getBatchStan(PosDTO posDto)
{
cnn = _sodexoSource.Create();
cnn.Open();
transaction = cnn.BeginTransaction();
return cnn.Query<BatchStanDTO>(new Templates.Queries.getBatchStan().TransformText(), new { idMerchant = posDto.idMerchant }, transaction).FirstOrDefault();
}
public void rollbackTran()
{
try
{
transaction.Rollback();
}
catch (Exception ex)
{
}
}
【问题讨论】:
-
根据您的帖子,您的要求非常不清楚。这看起来已经像 Dapper 了。您遇到了什么具体问题?
-
我认为
TransactionScope包裹在您的代码中会起作用。 -
我想使用 dapper Wrapper,但我无法获得像 cnn.Open() 这样的连接对象; ,好吧,我不明白连接器在哪里打开。谢谢
-
似乎是一些不错的建议here
-
当您在代码中使用
cnn.Query<T>或cnn.Execute时,cnn 是您的SQLConnection 对象。除了 Dapper 为您提供的额外方法之外,您还可以执行所有正常的 SqlConnection 操作。
标签: c#