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

.NET 作者: Rector 548阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

当前有需求,在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中如何使用事务进行数据库的操作?

发布于: 2018-01-08 10:01:38
分享扩散:

文章评论

获取验证码