5

如果我的 DAL 使用 dapper-dot-net,我如何创建交易?

我的 c# winform 应用程序将在网络中使用,数据将保存到中央 sql 服务器。

我的用例需要使用事务。我可以使用 dapper 来做到这一点,还是需要使用 NHibernate 之类的东西?

另外,如果我使用存储过程,这个框架是否有任何风险或限制?由于任何可能的限制,我是否需要改变我的方法?

4

2 回答 2

9

我在使用 sprocs 时没有遇到任何限制,而且使用 dapper 的风险与使用 sprocs 的风险相同

这是一个关于如何使用 dapper 交易的简单示例

using (var connection = Db.GetConnection())
{
     connection.Open();
     IDbTransaction transaction = connection.BeginTransaction();
     try
     {
         var newId= connection.Query<int>(@"Select id from table1 where id=@id", new{id}, transaction).Single();
         connection.Execute(@"INSERT into table1 ...",new {p1, p2}, transaction);
         connection.Execute(@"INSERT into table2 ...",new {p1, p2}, transaction);
         transaction.Commit();
     }
     catch (Exception ex)
     {
         transaction.Rollback();
     }
}
于 2012-12-31T14:13:46.630 回答
3

dapper 可以使用 ado.net 事务和隐式事务。对于 ado.net 事务,只需正常创建事务并通过transaction主要方法上可用的参数提供它。对于隐式事务,TransactionScope正常使用即可。

于 2012-12-31T23:40:03.100 回答