首页 / .NET / 正文

.NET[C#]Dapper中如何使用事务进行数据库的操作?

7714 发布于: 2018-01-08 读完约需4分钟

问题描述

当前有需求,在C#程序开发中需要使用Dapper对数据库的多个表分别进行写入操作,这些操作是在一个C#执行方法中的,所以涉及到数据库的事务,在Dapper中应该如何处理呢?

方案一

Dapper 对数据库操作的事务代码:

using System.Transactions;    
....    
using (var transactionScope = new TransactionScope())
{
    DoYourDapperWork();
    transactionScope.Complete();
}

方案二

using (var connection = GetOpenConnection())
using (var transaction = connection.BeginTransaction())
{
    connection.Execute(
        "INSERT INTO data(Foo, Bar) values (@Foo, @Bar);", listOf5000Items, transaction);
    transaction.Commit();
}

方案三

using System.Transactions;
    // 确保数据库连接已打开 
    using (var transactionScope = new TransactionScope())
    {
        try
        {
            long result = _sqlConnection.ExecuteScalar<long>(sqlString, new {Param1 = 1, Param2 = "string"});

            transactionScope.Complete();
        }
        catch (Exception exception)
        {
            // 记录错误日志
            _logger.Error(exception, $"Error encountered whilst executing  SQL: {sqlString}, Message: {exception.Message}")

            // 重新抛出异常
            throw;
        }
    }

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: .NET[C#]Dapper中数据表的字段(列)与实体属性不一致时,如何手动配置它们之间的映射?

下一篇: .NET[C#]Dapper中如何处理嵌套类的映射和查询问题?

本文永久链接码友网 » .NET[C#]Dapper中如何使用事务进行数据库的操作?

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册