architecture - "dapper-dot-net"中的交易

标签 architecture data-access-layer dapper

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

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

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

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

最佳答案

我在使用 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();
     }
}

关于architecture - "dapper-dot-net"中的交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14101213/

相关文章:

java - 如何将 DAO 与 hibernate/jpa 一起使用?

sql-server - 业务层与 SQL Server

inversion-of-control - 如何处理 Dapper 中使用的连接?

linux - 在 Ansible 角色中动态分配主/从变量

networking - 游戏服务器应该如何以定义的滴答率接收 udp 数据包?

c# - 如何为我的 ASP.NET Web 应用程序引用 App_Data 文件夹中的 Sqlite 数据库文件?

c# - 动态查询 2 个实体类型并将结果映射回特定实体集

c# - CaSTLe.Windsor 使用 Dapper 实例化错误版本的 SqlConnection

reactjs - 如何忽略通过 HTTP 进行更改的客户端的 websocket 事件?

workflow - ASP.NET 3.5 Web 应用程序中的 Windows Workflow Foundation - 最佳方法