在 Dapper中使用BeginTransaction()
with的正确方法是什么?IDbConnection
我创建了一个我必须使用的方法BeginTransaction()
。这是代码。
using (IDbConnection cn = DBConnection)
{
var oTransaction = cn.BeginTransaction();
try
{
// SAVE BASIC CONSULT DETAIL
var oPara = new DynamicParameters();
oPara.Add("@PatientID", iPatientID, dbType: DbType.Int32);
..........blah......blah............
}
catch (Exception ex)
{
oTransaction.Rollback();
return new SaveResponse { Success = false, ResponseString = ex.Message };
}
}
当我执行上述方法时-我遇到了异常-
无效操作。连接已关闭。
这是因为您无法在连接打开之前开始事务。所以当我添加这一行时:cn.Open();
,错误得到解决。但是我在某处读到手动打开连接是不好的做法!Dapper 仅在需要时打开连接。
在实体框架中,您可以使用TransactionScope
.
cn.Open()...
所以我的问题是什么是处理事务而不在Dapper中添加行的好习惯?我想应该有一些适当的方法。