From bae0f1c63ed0aea630cc121a3ebb702fedc51412 Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Fri, 1 May 2020 06:41:58 +0800 Subject: [PATCH] update UnitOfWorkManager demo --- .../Controllers/HomeController.cs | 34 +++++++++++++++++-- Examples/aspnetcore_transaction/Startup.cs | 3 ++ .../aspnetcore_transaction.csproj | 2 +- 3 files changed, 35 insertions(+), 4 deletions(-) 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 @@ - +