diff --git a/Examples/aspnetcore_transaction/Controllers/HomeController.cs b/Examples/aspnetcore_transaction/Controllers/HomeController.cs index d3fe0d1c..84d6a317 100644 --- a/Examples/aspnetcore_transaction/Controllers/HomeController.cs +++ b/Examples/aspnetcore_transaction/Controllers/HomeController.cs @@ -2,6 +2,7 @@ using FreeSql.DataAnnotations; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; +using System.Threading.Tasks; namespace aspnetcore_transaction.Controllers { @@ -16,12 +17,22 @@ namespace aspnetcore_transaction.Controllers _logger = logger; } - [HttpGet] + [HttpGet("1")] //[Transactional] virtual public object Get([FromServices] BaseRepository repoSong, [FromServices] BaseRepository repoDetail, [FromServices] SongRepository repoSong2, [FromServices] SongService serviceSong) { - serviceSong.Test(); + serviceSong.Test1(); + return "111"; + } + + [HttpGet("2")] + //[Transactional] + async virtual public Task GetAsync([FromServices] BaseRepository repoSong, [FromServices] BaseRepository repoDetail, [FromServices] SongRepository repoSong2, + [FromServices] SongService serviceSong) + { + await serviceSong.Test2(); + await serviceSong.Test3(); return "111"; } } @@ -40,12 +51,29 @@ namespace aspnetcore_transaction.Controllers } [Transactional(Propagation = Propagation.Nested)] //sqlite 不能嵌套事务,会锁库的 - public virtual void Test() + public virtual void Test1() { _repoSong.Insert(new Song()); _repoDetail.Insert(new Detail()); _repoSong2.Insert(new Song()); } + + [Transactional(Propagation = Propagation.Nested)] //sqlite 不能嵌套事务,会锁库的 + async public virtual Task Test2() + { + await _repoSong.InsertAsync(new Song()); + await _repoDetail.InsertAsync(new Detail()); + await _repoSong2.InsertAsync(new Song()); + } + + [Transactional(Propagation = Propagation.Nested)] //sqlite 不能嵌套事务,会锁库的 + async public virtual Task Test3() + { + await _repoSong.InsertAsync(new Song()); + await _repoDetail.InsertAsync(new Detail()); + await _repoSong2.InsertAsync(new Song()); + return "123"; + } } public class SongRepository : DefaultRepository diff --git a/Examples/aspnetcore_transaction/Startup.cs b/Examples/aspnetcore_transaction/Startup.cs index 67727f65..33903efa 100644 --- a/Examples/aspnetcore_transaction/Startup.cs +++ b/Examples/aspnetcore_transaction/Startup.cs @@ -28,6 +28,9 @@ namespace aspnetcore_transaction .UseMonitorCommand(cmd => Trace.WriteLine(cmd.CommandText)) .UseNoneCommandParameter(true) .Build(); + + Fsql.Aop.TraceBefore += (_, e) => Trace.WriteLine($"----TraceBefore---{e.Identifier} {e.Operation}"); + Fsql.Aop.TraceAfter += (_, e) => Trace.WriteLine($"----TraceAfter---{e.Identifier} {e.Operation} {e.Remark} {e.Exception?.Message} {e.ElapsedMilliseconds}ms\r\n"); } public IConfiguration Configuration { get; } diff --git a/Examples/aspnetcore_transaction/aspnetcore_transaction.csproj b/Examples/aspnetcore_transaction/aspnetcore_transaction.csproj index 1ff5ec53..16c8e28f 100644 --- a/Examples/aspnetcore_transaction/aspnetcore_transaction.csproj +++ b/Examples/aspnetcore_transaction/aspnetcore_transaction.csproj @@ -5,7 +5,7 @@ - +