src/Coast.Core.Test/Dapper.cs
(完整代码) 1KBusing 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 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
