namespace Tiobon.Core.Controllers { [Route("api/[controller]/[action]")] [ApiController, ApiExplorerSettings(GroupName = Grouping.GroupName_Other)] [AllowAnonymous] public class TransactionController : ControllerBase { private readonly IPasswordLibServices _passwordLibServices; private readonly IGuestbookServices _guestbookServices; private readonly IUnitOfWorkManage _unitOfWorkManage; public TransactionController(IUnitOfWorkManage unitOfWorkManage, IPasswordLibServices passwordLibServices, IGuestbookServices guestbookServices) { _unitOfWorkManage = unitOfWorkManage; _passwordLibServices = passwordLibServices; _guestbookServices = guestbookServices; } // GET: api/Transaction [HttpGet] public async Task>> Get() { List returnMsg = new List() { }; try { returnMsg.Add($"Begin Transaction"); _unitOfWorkManage.BeginTran(); var passwords = await _passwordLibServices.Query(d => d.IsDeleted == false); returnMsg.Add($"first time : the count of passwords is :{passwords.Count}"); returnMsg.Add($"insert a data into the table PasswordLib now."); var insertPassword = await _passwordLibServices.Add(new PasswordLib() { IsDeleted = false, plAccountName = "aaa", plCreateTime = DateTime.Now }); passwords = await _passwordLibServices.Query(d => d.IsDeleted == false); returnMsg.Add($"second time : the count of passwords is :{passwords.Count}"); returnMsg.Add($" "); //...... var guestbooks = await _guestbookServices.Query(); returnMsg.Add($"first time : the count of guestbooks is :{guestbooks.Count}"); int ex = 0; returnMsg.Add($"There's an exception!!"); returnMsg.Add($" "); int throwEx = 1 / ex; var insertGuestbook = await _guestbookServices.Add(new Guestbook() { username = "bbb", TiobonId = 1, createdate = DateTime.Now, isshow = true }); guestbooks = await _guestbookServices.Query(); returnMsg.Add($"first time : the count of guestbooks is :{guestbooks.Count}"); returnMsg.Add($" "); _unitOfWorkManage.CommitTran(); } catch (Exception) { _unitOfWorkManage.RollbackTran(); var passwords = await _passwordLibServices.Query(); returnMsg.Add($"third time : the count of passwords is :{passwords.Count}"); var guestbooks = await _guestbookServices.Query(); returnMsg.Add($"third time : the count of guestbooks is :{guestbooks.Count}"); } return new ServiceResult>() { Success = true, Message = "操作完成", Data = returnMsg }; } // GET: api/Transaction/5 [HttpGet("{id}")] public async Task> Get(long id) { return await _guestbookServices.TestTranInRepository(); } [HttpGet] public async Task GetTestTranPropagation() { return await _guestbookServices.TestTranPropagation(); } [HttpGet] public async Task GetTestTranPropagationNoTran() { return await _guestbookServices.TestTranPropagationNoTran(); } [HttpGet] public async Task GetTestTranPropagationTran() { return await _guestbookServices.TestTranPropagationTran(); } // POST: api/Transaction [HttpPost] public void Post([FromBody] string value) { } // PUT: api/Transaction/5 [HttpPut("{id}")] public void Put(long id, [FromBody] string value) { } /// /// 测试事务在AOP中的使用 /// /// /// [HttpDelete("{id}")] public async Task Delete(long id) { return await _guestbookServices.TestTranInRepositoryAOP(); } } }