Abp.VNext-SaveChanges事务提交

var blog = await _blogRepository.InsertAsync(ObjectMapper.Map<AddBlogInputDto, Blog>(inputDto));

//查询不到数据,返回null
var newblog = await _blogRepository.FindAsync(blog.Id); 

//加上此行代码后,若插入异常,执行此行代码后回滚并且不会再往下走
//不加此代码,若插入异常会继续往下执行
await CurrentUnitOfWork.SaveChangesAsync();

//能查询到数据,但是此条数据其实未入库,等整个最外层结束之后才入库
var newblog1 = await _blogRepository.FindAsync(blog.Id); 

return blog.Id;

requiresNew:是否支持嵌套事务

isTransactional:是否开启数据库事务

using var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true);

var blog = await _blogRepository.InsertAsync(ObjectMapper.Map<AddBlogInputDto, Blog>(inputDto));

//若插入异常,执行完这行代码则回滚且不会再往下走
await uow.SaveChangesAsync();

//虽然数据还未入库,但执行此行代码能查询到数据信息
var newblog = await _blogRepository.FindAsync(blog.Id);

//若执行此行代码之前无异常,执行完此行代码后数据便已入库,
await uow.CompleteAsync();

return blog.Id;
posted @ 2024-11-19 18:05  相遇就是有缘  阅读(87)  评论(0)    收藏  举报