You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
4.6 KiB
137 lines
4.6 KiB
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<ServiceResult<IEnumerable<string>>> Get()
|
|
{
|
|
List<string> returnMsg = new List<string>() { };
|
|
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<IEnumerable<string>>()
|
|
{
|
|
success = true,
|
|
msg = "操作完成",
|
|
response = returnMsg
|
|
};
|
|
}
|
|
|
|
// GET: api/Transaction/5
|
|
[HttpGet("{id}")]
|
|
public async Task<ServiceResult<string>> Get(long id)
|
|
{
|
|
return await _guestbookServices.TestTranInRepository();
|
|
}
|
|
|
|
[HttpGet]
|
|
public async Task<bool> GetTestTranPropagation()
|
|
{
|
|
return await _guestbookServices.TestTranPropagation();
|
|
}
|
|
|
|
[HttpGet]
|
|
public async Task<bool> GetTestTranPropagationNoTran()
|
|
{
|
|
return await _guestbookServices.TestTranPropagationNoTran();
|
|
}
|
|
|
|
[HttpGet]
|
|
public async Task<bool> 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)
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// 测试事务在AOP中的使用
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
[HttpDelete("{id}")]
|
|
public async Task<bool> Delete(long id)
|
|
{
|
|
return await _guestbookServices.TestTranInRepositoryAOP();
|
|
}
|
|
}
|
|
} |