src/Coast.Core.Test/Dapper.cs

(完整代码) 1KB

using Dapper;
using Npgsql;
using System;
using System.Data;
using System.Threading.Tasks;
using System.Transactions;
using Xunit;

namespace Coast.Core.Test
{
    public class Dapper
    {
        private const string InsertSagaSql =
@"INSERT INTO ""Coast_Saga"" 
(""Id"", ""State"", ""CreationTime"") 
VALUES (@Id, @State, @CreationTime); ";
        [Fact(Skip ="integration test")]
        public async Task Test1Async()
        {
            using var conn = new NpgsqlConnection("Host=localhost;Port=5432;database=postgres;User Id=postgres;Password=root;");
            conn.Open();
            var tr = conn.BeginTransaction();

            var test = Transaction.Current;
            await conn.ExecuteAsync(
                    InsertSagaSql,
                    new { Id = 5, State = SagaStateEnum.Started, CreationTime = DateTime.UtcNow },
                    transaction: tr).ConfigureAwait(false);
            await ChangeDb(conn, tr);

            throw new Exception();
            tr.Commit();
        }

        private async Task ChangeDb(IDbConnection db, IDbTransaction tx)
        {
            var conn2 = new NpgsqlConnection("Host=localhost;Port=5432;database=postgres;User Id=alean;Password=alean;");
            await db.ExecuteAsync(
                    InsertSagaSql,
                    new { Id = 6, State = SagaStateEnum.Started, CreationTime = DateTime.UtcNow },
                    transaction: tx).ConfigureAwait(false);


            conn2.Close();
        }
    }
}

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。