mirror of
https://github.com/anjoy8/Blog.Core.git
synced 2024-09-20 23:48:27 +08:00
✨ UnitOfWork简化事务操作
This commit is contained in:
parent
07b692f0cd
commit
dabbc7ea3b
|
@ -644,11 +644,11 @@
|
|||
用户管理
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Blog.Core.Controllers.UserController.#ctor(Blog.Core.IRepository.UnitOfWork.IUnitOfWork,Blog.Core.IServices.ISysUserInfoServices,Blog.Core.IServices.IUserRoleServices,Blog.Core.IServices.IRoleServices,Blog.Core.IServices.IDepartmentServices,Blog.Core.Common.HttpContextUser.IUser,AutoMapper.IMapper,Microsoft.Extensions.Logging.ILogger{Blog.Core.Controllers.UserController})">
|
||||
<member name="M:Blog.Core.Controllers.UserController.#ctor(Blog.Core.Repository.UnitOfWorks.IUnitOfWorkManage,Blog.Core.IServices.ISysUserInfoServices,Blog.Core.IServices.IUserRoleServices,Blog.Core.IServices.IRoleServices,Blog.Core.IServices.IDepartmentServices,Blog.Core.Common.HttpContextUser.IUser,AutoMapper.IMapper,Microsoft.Extensions.Logging.ILogger{Blog.Core.Controllers.UserController})">
|
||||
<summary>
|
||||
构造函数
|
||||
</summary>
|
||||
<param name="unitOfWork"></param>
|
||||
<param name="unitOfWorkManage"></param>
|
||||
<param name="sysUserInfoServices"></param>
|
||||
<param name="userRoleServices"></param>
|
||||
<param name="roleServices"></param>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using Blog.Core.Common.Helper;
|
||||
using Blog.Core.IRepository.UnitOfWork;
|
||||
using Blog.Core.IServices;
|
||||
using Blog.Core.Model;
|
||||
using Blog.Core.Model.Models;
|
||||
|
@ -15,6 +14,7 @@ using System.IO;
|
|||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Blog.Core.Repository.UnitOfWorks;
|
||||
|
||||
namespace Blog.Core.Controllers
|
||||
{
|
||||
|
@ -23,7 +23,7 @@ namespace Blog.Core.Controllers
|
|||
//[Authorize(Permissions.Name)]
|
||||
public class MigrateController : ControllerBase
|
||||
{
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
private readonly IUnitOfWorkManage _unitOfWorkManage;
|
||||
private readonly IRoleModulePermissionServices _roleModulePermissionServices;
|
||||
private readonly IUserRoleServices _userRoleServices;
|
||||
private readonly IRoleServices _roleServices;
|
||||
|
@ -33,7 +33,7 @@ namespace Blog.Core.Controllers
|
|||
private readonly ISysUserInfoServices _sysUserInfoServices;
|
||||
private readonly IWebHostEnvironment _env;
|
||||
|
||||
public MigrateController(IUnitOfWork unitOfWork,
|
||||
public MigrateController(IUnitOfWorkManage unitOfWorkManage,
|
||||
IRoleModulePermissionServices roleModulePermissionServices,
|
||||
IUserRoleServices userRoleServices,
|
||||
IRoleServices roleServices,
|
||||
|
@ -43,7 +43,7 @@ namespace Blog.Core.Controllers
|
|||
ISysUserInfoServices sysUserInfoServices,
|
||||
IWebHostEnvironment env)
|
||||
{
|
||||
_unitOfWork = unitOfWork;
|
||||
_unitOfWorkManage = unitOfWorkManage;
|
||||
_roleModulePermissionServices = roleModulePermissionServices;
|
||||
_userRoleServices = userRoleServices;
|
||||
_roleServices = roleServices;
|
||||
|
@ -86,7 +86,7 @@ namespace Blog.Core.Controllers
|
|||
permissions = permissions.Where(d => filterPermissionIds.Contains(d.Id)).ToList();
|
||||
|
||||
// 开启事务,保证数据一致性
|
||||
_unitOfWork.BeginTran();
|
||||
_unitOfWorkManage.BeginTran();
|
||||
|
||||
// 注意信息的完整性,不要重复添加,确保主库没有要添加的数据
|
||||
|
||||
|
@ -136,14 +136,14 @@ namespace Blog.Core.Controllers
|
|||
}
|
||||
|
||||
|
||||
_unitOfWork.CommitTran();
|
||||
_unitOfWorkManage.CommitTran();
|
||||
|
||||
data.success = true;
|
||||
data.msg = "导入成功!";
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
_unitOfWork.RollbackTran();
|
||||
_unitOfWorkManage.RollbackTran();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,11 +4,11 @@ using System.Linq;
|
|||
using System.Linq.Expressions;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
using Blog.Core.IRepository.UnitOfWork;
|
||||
using Blog.Core.IServices;
|
||||
using Blog.Core.Model;
|
||||
using Blog.Core.Model.Models;
|
||||
using Blog.Core.Model.ViewModels;
|
||||
using Blog.Core.Repository.UnitOfWorks;
|
||||
using Blog.Core.Tasks;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
@ -23,11 +23,11 @@ namespace Blog.Core.Controllers
|
|||
{
|
||||
private readonly ITasksQzServices _tasksQzServices;
|
||||
private readonly ISchedulerCenter _schedulerCenter;
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
private readonly IUnitOfWorkManage _unitOfWorkManage;
|
||||
|
||||
public TasksQzController(ITasksQzServices tasksQzServices, ISchedulerCenter schedulerCenter, IUnitOfWork unitOfWork)
|
||||
public TasksQzController(ITasksQzServices tasksQzServices, ISchedulerCenter schedulerCenter, IUnitOfWorkManage unitOfWorkManage)
|
||||
{
|
||||
_unitOfWork = unitOfWork;
|
||||
_unitOfWorkManage = unitOfWorkManage;
|
||||
_tasksQzServices = tasksQzServices;
|
||||
_schedulerCenter = schedulerCenter;
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ namespace Blog.Core.Controllers
|
|||
public async Task<MessageModel<string>> Post([FromBody] TasksQz tasksQz)
|
||||
{
|
||||
var data = new MessageModel<string>();
|
||||
_unitOfWork.BeginTran();
|
||||
_unitOfWorkManage.BeginTran();
|
||||
var id = (await _tasksQzServices.Add(tasksQz));
|
||||
data.success = id > 0;
|
||||
try
|
||||
|
@ -107,9 +107,9 @@ namespace Blog.Core.Controllers
|
|||
}
|
||||
finally
|
||||
{ if(data.success)
|
||||
_unitOfWork.CommitTran();
|
||||
_unitOfWorkManage.CommitTran();
|
||||
else
|
||||
_unitOfWork.RollbackTran();
|
||||
_unitOfWorkManage.RollbackTran();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
@ -126,7 +126,7 @@ namespace Blog.Core.Controllers
|
|||
var data = new MessageModel<string>();
|
||||
if (tasksQz != null && tasksQz.Id > 0)
|
||||
{
|
||||
_unitOfWork.BeginTran();
|
||||
_unitOfWorkManage.BeginTran();
|
||||
data.success = await _tasksQzServices.Update(tasksQz);
|
||||
try
|
||||
{
|
||||
|
@ -160,9 +160,9 @@ namespace Blog.Core.Controllers
|
|||
finally
|
||||
{
|
||||
if (data.success)
|
||||
_unitOfWork.CommitTran();
|
||||
_unitOfWorkManage.CommitTran();
|
||||
else
|
||||
_unitOfWork.RollbackTran();
|
||||
_unitOfWorkManage.RollbackTran();
|
||||
}
|
||||
}
|
||||
return data;
|
||||
|
@ -180,7 +180,7 @@ namespace Blog.Core.Controllers
|
|||
var model = await _tasksQzServices.QueryById(jobId);
|
||||
if (model != null)
|
||||
{
|
||||
_unitOfWork.BeginTran();
|
||||
_unitOfWorkManage.BeginTran();
|
||||
data.success = await _tasksQzServices.Delete(model);
|
||||
try
|
||||
{
|
||||
|
@ -204,9 +204,9 @@ namespace Blog.Core.Controllers
|
|||
finally
|
||||
{
|
||||
if (data.success)
|
||||
_unitOfWork.CommitTran();
|
||||
_unitOfWorkManage.CommitTran();
|
||||
else
|
||||
_unitOfWork.RollbackTran();
|
||||
_unitOfWorkManage.RollbackTran();
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -229,7 +229,7 @@ namespace Blog.Core.Controllers
|
|||
var model = await _tasksQzServices.QueryById(jobId);
|
||||
if (model != null)
|
||||
{
|
||||
_unitOfWork.BeginTran();
|
||||
_unitOfWorkManage.BeginTran();
|
||||
try
|
||||
{
|
||||
model.IsStart = true;
|
||||
|
@ -262,9 +262,9 @@ namespace Blog.Core.Controllers
|
|||
finally
|
||||
{
|
||||
if (data.success)
|
||||
_unitOfWork.CommitTran();
|
||||
_unitOfWorkManage.CommitTran();
|
||||
else
|
||||
_unitOfWork.RollbackTran();
|
||||
_unitOfWorkManage.RollbackTran();
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -325,7 +325,7 @@ namespace Blog.Core.Controllers
|
|||
var model = await _tasksQzServices.QueryById(jobId);
|
||||
if (model != null)
|
||||
{
|
||||
_unitOfWork.BeginTran();
|
||||
_unitOfWorkManage.BeginTran();
|
||||
try
|
||||
{
|
||||
data.success = await _tasksQzServices.Update(model);
|
||||
|
@ -356,9 +356,9 @@ namespace Blog.Core.Controllers
|
|||
finally
|
||||
{
|
||||
if (data.success)
|
||||
_unitOfWork.CommitTran();
|
||||
_unitOfWorkManage.CommitTran();
|
||||
else
|
||||
_unitOfWork.RollbackTran();
|
||||
_unitOfWorkManage.RollbackTran();
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -380,7 +380,7 @@ namespace Blog.Core.Controllers
|
|||
var model = await _tasksQzServices.QueryById(jobId);
|
||||
if (model != null)
|
||||
{
|
||||
_unitOfWork.BeginTran();
|
||||
_unitOfWorkManage.BeginTran();
|
||||
try
|
||||
{
|
||||
model.IsStart = true;
|
||||
|
@ -412,9 +412,9 @@ namespace Blog.Core.Controllers
|
|||
finally
|
||||
{
|
||||
if (data.success)
|
||||
_unitOfWork.CommitTran();
|
||||
_unitOfWorkManage.CommitTran();
|
||||
else
|
||||
_unitOfWork.RollbackTran();
|
||||
_unitOfWorkManage.RollbackTran();
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -436,7 +436,7 @@ namespace Blog.Core.Controllers
|
|||
if (model != null)
|
||||
{
|
||||
|
||||
_unitOfWork.BeginTran();
|
||||
_unitOfWorkManage.BeginTran();
|
||||
try
|
||||
{
|
||||
model.IsStart = true;
|
||||
|
@ -472,9 +472,9 @@ namespace Blog.Core.Controllers
|
|||
finally
|
||||
{
|
||||
if (data.success)
|
||||
_unitOfWork.CommitTran();
|
||||
_unitOfWorkManage.CommitTran();
|
||||
else
|
||||
_unitOfWork.RollbackTran();
|
||||
_unitOfWorkManage.RollbackTran();
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Blog.Core.IRepository.UnitOfWork;
|
||||
using Blog.Core.IServices;
|
||||
using Blog.Core.Model;
|
||||
using Blog.Core.Model.Models;
|
||||
using Blog.Core.Repository.UnitOfWorks;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
|
@ -17,12 +17,12 @@ namespace Blog.Core.Controllers
|
|||
{
|
||||
private readonly IPasswordLibServices _passwordLibServices;
|
||||
private readonly IGuestbookServices _guestbookServices;
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
private readonly IUnitOfWorkManage _unitOfWorkManage;
|
||||
|
||||
|
||||
public TransactionController(IUnitOfWork unitOfWork, IPasswordLibServices passwordLibServices, IGuestbookServices guestbookServices)
|
||||
public TransactionController(IUnitOfWorkManage unitOfWorkManage, IPasswordLibServices passwordLibServices, IGuestbookServices guestbookServices)
|
||||
{
|
||||
_unitOfWork = unitOfWork;
|
||||
_unitOfWorkManage = unitOfWorkManage;
|
||||
_passwordLibServices = passwordLibServices;
|
||||
_guestbookServices = guestbookServices;
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ namespace Blog.Core.Controllers
|
|||
{
|
||||
returnMsg.Add($"Begin Transaction");
|
||||
|
||||
_unitOfWork.BeginTran();
|
||||
_unitOfWorkManage.BeginTran();
|
||||
var passwords = await _passwordLibServices.Query(d => d.IsDeleted == false);
|
||||
returnMsg.Add($"first time : the count of passwords is :{passwords.Count}");
|
||||
|
||||
|
@ -76,11 +76,11 @@ namespace Blog.Core.Controllers
|
|||
returnMsg.Add($"first time : the count of guestbooks is :{guestbooks.Count}");
|
||||
returnMsg.Add($" ");
|
||||
|
||||
_unitOfWork.CommitTran();
|
||||
_unitOfWorkManage.CommitTran();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
_unitOfWork.RollbackTran();
|
||||
_unitOfWorkManage.RollbackTran();
|
||||
var passwords = await _passwordLibServices.Query();
|
||||
returnMsg.Add($"third time : the count of passwords is :{passwords.Count}");
|
||||
|
||||
|
|
|
@ -6,11 +6,11 @@ using AutoMapper;
|
|||
using Blog.Core.AuthHelper.OverWrite;
|
||||
using Blog.Core.Common.Helper;
|
||||
using Blog.Core.Common.HttpContextUser;
|
||||
using Blog.Core.IRepository.UnitOfWork;
|
||||
using Blog.Core.IServices;
|
||||
using Blog.Core.Model;
|
||||
using Blog.Core.Model.Models;
|
||||
using Blog.Core.Model.ViewModels;
|
||||
using Blog.Core.Repository.UnitOfWorks;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
@ -25,7 +25,7 @@ namespace Blog.Core.Controllers
|
|||
[Authorize(Permissions.Name)]
|
||||
public class UserController : BaseApiController
|
||||
{
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
private readonly IUnitOfWorkManage _unitOfWorkManage;
|
||||
readonly ISysUserInfoServices _sysUserInfoServices;
|
||||
readonly IUserRoleServices _userRoleServices;
|
||||
readonly IRoleServices _roleServices;
|
||||
|
@ -37,7 +37,7 @@ namespace Blog.Core.Controllers
|
|||
/// <summary>
|
||||
/// 构造函数
|
||||
/// </summary>
|
||||
/// <param name="unitOfWork"></param>
|
||||
/// <param name="unitOfWorkManage"></param>
|
||||
/// <param name="sysUserInfoServices"></param>
|
||||
/// <param name="userRoleServices"></param>
|
||||
/// <param name="roleServices"></param>
|
||||
|
@ -45,13 +45,13 @@ namespace Blog.Core.Controllers
|
|||
/// <param name="user"></param>
|
||||
/// <param name="mapper"></param>
|
||||
/// <param name="logger"></param>
|
||||
public UserController(IUnitOfWork unitOfWork, ISysUserInfoServices sysUserInfoServices,
|
||||
public UserController(IUnitOfWorkManage unitOfWorkManage, ISysUserInfoServices sysUserInfoServices,
|
||||
IUserRoleServices userRoleServices,
|
||||
IRoleServices roleServices,
|
||||
IDepartmentServices departmentServices,
|
||||
IUser user, IMapper mapper, ILogger<UserController> logger)
|
||||
{
|
||||
_unitOfWork = unitOfWork;
|
||||
_unitOfWorkManage = unitOfWorkManage;
|
||||
_sysUserInfoServices = sysUserInfoServices;
|
||||
_userRoleServices = userRoleServices;
|
||||
_roleServices = roleServices;
|
||||
|
@ -215,7 +215,7 @@ namespace Blog.Core.Controllers
|
|||
|
||||
_mapper.Map(sysUserInfo, oldUser);
|
||||
|
||||
_unitOfWork.BeginTran();
|
||||
_unitOfWorkManage.BeginTran();
|
||||
// 无论 Update Or Add , 先删除当前用户的全部 U_R 关系
|
||||
var usreroles = (await _userRoleServices.Query(d => d.UserId == oldUser.Id));
|
||||
if (usreroles.Any())
|
||||
|
@ -246,7 +246,7 @@ namespace Blog.Core.Controllers
|
|||
|
||||
data.success = await _sysUserInfoServices.Update(oldUser);
|
||||
|
||||
_unitOfWork.CommitTran();
|
||||
_unitOfWorkManage.CommitTran();
|
||||
|
||||
if (data.success)
|
||||
{
|
||||
|
@ -256,7 +256,7 @@ namespace Blog.Core.Controllers
|
|||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_unitOfWork.RollbackTran();
|
||||
_unitOfWorkManage.RollbackTran();
|
||||
_logger.LogError(e, e.Message);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
using Blog.Core.Common;
|
||||
using Blog.Core.IRepository.UnitOfWork;
|
||||
using Castle.DynamicProxy;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
using Blog.Core.Common.DB;
|
||||
using Blog.Core.Repository.UnitOfWorks;
|
||||
|
||||
namespace Blog.Core.AOP
|
||||
{
|
||||
|
@ -15,11 +15,11 @@ namespace Blog.Core.AOP
|
|||
public class BlogTranAOP : IInterceptor
|
||||
{
|
||||
private readonly ILogger<BlogTranAOP> _logger;
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
private readonly IUnitOfWorkManage _unitOfWorkManage;
|
||||
|
||||
public BlogTranAOP(IUnitOfWork unitOfWork, ILogger<BlogTranAOP> logger)
|
||||
public BlogTranAOP(IUnitOfWorkManage unitOfWorkManage, ILogger<BlogTranAOP> logger)
|
||||
{
|
||||
_unitOfWork = unitOfWork;
|
||||
_unitOfWorkManage = unitOfWorkManage;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
|
@ -70,16 +70,16 @@ namespace Blog.Core.AOP
|
|||
switch (propagation)
|
||||
{
|
||||
case Propagation.Required:
|
||||
if (_unitOfWork.TranCount <= 0)
|
||||
if (_unitOfWorkManage.TranCount <= 0)
|
||||
{
|
||||
_logger.LogDebug($"Begin Transaction");
|
||||
Console.WriteLine($"Begin Transaction");
|
||||
_unitOfWork.BeginTran(method);
|
||||
_unitOfWorkManage.BeginTran(method);
|
||||
}
|
||||
|
||||
break;
|
||||
case Propagation.Mandatory:
|
||||
if (_unitOfWork.TranCount <= 0)
|
||||
if (_unitOfWorkManage.TranCount <= 0)
|
||||
{
|
||||
throw new Exception("事务传播机制为:[Mandatory],当前不存在事务");
|
||||
}
|
||||
|
@ -88,7 +88,7 @@ namespace Blog.Core.AOP
|
|||
case Propagation.Nested:
|
||||
_logger.LogDebug($"Begin Transaction");
|
||||
Console.WriteLine($"Begin Transaction");
|
||||
_unitOfWork.BeginTran(method);
|
||||
_unitOfWorkManage.BeginTran(method);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException(nameof(propagation), propagation, null);
|
||||
|
@ -97,12 +97,12 @@ namespace Blog.Core.AOP
|
|||
|
||||
private void After(MethodInfo method)
|
||||
{
|
||||
_unitOfWork.CommitTran(method);
|
||||
_unitOfWorkManage.CommitTran(method);
|
||||
}
|
||||
|
||||
private void AfterException(MethodInfo method)
|
||||
{
|
||||
_unitOfWork.RollbackTran(method);
|
||||
_unitOfWorkManage.RollbackTran(method);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -12,8 +12,7 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using Blog.Core.IRepository.UnitOfWork;
|
||||
using Blog.Core.Repository.UnitOfWork;
|
||||
using Blog.Core.Repository.UnitOfWorks;
|
||||
|
||||
namespace Blog.Core.Extensions
|
||||
{
|
||||
|
@ -85,7 +84,7 @@ namespace Blog.Core.Extensions
|
|||
.PropertiesAutowired()
|
||||
.InstancePerDependency();
|
||||
|
||||
builder.RegisterType<UnitOfWork>().As<IUnitOfWork>()
|
||||
builder.RegisterType<UnitOfWorkManageManager>().As<IUnitOfWorkManage>()
|
||||
.AsImplementedInterfaces()
|
||||
.InstancePerLifetimeScope()
|
||||
.PropertiesAutowired();
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
using Blog.Core.Common;
|
||||
using Blog.Core.Common.DB;
|
||||
using Blog.Core.IRepository.Base;
|
||||
using Blog.Core.IRepository.UnitOfWork;
|
||||
using Blog.Core.Model;
|
||||
using SqlSugar;
|
||||
using System;
|
||||
|
@ -10,12 +9,13 @@ using System.Data;
|
|||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading.Tasks;
|
||||
using Blog.Core.Repository.UnitOfWorks;
|
||||
|
||||
namespace Blog.Core.Repository.Base
|
||||
{
|
||||
public class BaseRepository<TEntity> : IBaseRepository<TEntity> where TEntity : class, new()
|
||||
{
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
private readonly IUnitOfWorkManage _unitOfWorkManage;
|
||||
private readonly SqlSugarScope _dbBase;
|
||||
|
||||
private ISqlSugarClient _db
|
||||
|
@ -52,10 +52,10 @@ namespace Blog.Core.Repository.Base
|
|||
|
||||
public ISqlSugarClient Db => _db;
|
||||
|
||||
public BaseRepository(IUnitOfWork unitOfWork)
|
||||
public BaseRepository(IUnitOfWorkManage unitOfWorkManage)
|
||||
{
|
||||
_unitOfWork = unitOfWork;
|
||||
_dbBase = unitOfWork.GetDbClient();
|
||||
_unitOfWorkManage = unitOfWorkManage;
|
||||
_dbBase = unitOfWorkManage.GetDbClient();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -29,8 +29,4 @@
|
|||
<ProjectReference Include="..\Blog.Core.Model\Blog.Core.Model.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="UnitOfWork\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
using Blog.Core.IRepository;
|
||||
using Blog.Core.IRepository.UnitOfWork;
|
||||
using Blog.Core.Model.Models;
|
||||
using Blog.Core.Repository.Base;
|
||||
using SqlSugar;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Blog.Core.Repository.UnitOfWorks;
|
||||
|
||||
namespace Blog.Core.Repository
|
||||
{
|
||||
|
@ -13,7 +13,7 @@ namespace Blog.Core.Repository
|
|||
/// </summary>
|
||||
public class RoleModulePermissionRepository : BaseRepository<RoleModulePermission>, IRoleModulePermissionRepository
|
||||
{
|
||||
public RoleModulePermissionRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
|
||||
public RoleModulePermissionRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
using System.Reflection;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Blog.Core.IRepository.UnitOfWork
|
||||
namespace Blog.Core.Repository.UnitOfWorks
|
||||
{
|
||||
public interface IUnitOfWork
|
||||
public interface IUnitOfWorkManage
|
||||
{
|
||||
SqlSugarScope GetDbClient();
|
||||
int TranCount { get; }
|
||||
|
||||
UnitOfWork CreateUnitOfWork();
|
||||
|
||||
void BeginTran();
|
||||
void BeginTran(MethodInfo method);
|
||||
void CommitTran();
|
50
Blog.Core.Repository/UnitOfWorks/UnitOfWork.cs
Normal file
50
Blog.Core.Repository/UnitOfWorks/UnitOfWork.cs
Normal file
|
@ -0,0 +1,50 @@
|
|||
using System;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Blog.Core.Repository.UnitOfWorks;
|
||||
|
||||
public class UnitOfWork : IDisposable
|
||||
{
|
||||
public ILogger Logger { get; set; }
|
||||
public ISqlSugarClient Db { get; internal set; }
|
||||
|
||||
public ITenant Tenant { get; internal set; }
|
||||
|
||||
public bool IsTran { get; internal set; }
|
||||
|
||||
public bool IsCommit { get; internal set; }
|
||||
|
||||
public bool IsClose { get; internal set; }
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (this.IsTran && !this.IsCommit)
|
||||
{
|
||||
Logger.LogDebug("UnitOfWork RollbackTran");
|
||||
this.Tenant.RollbackTran();
|
||||
}
|
||||
|
||||
if (this.Db.Ado.Transaction != null || this.IsClose)
|
||||
return;
|
||||
this.Db.Close();
|
||||
}
|
||||
|
||||
public bool Commit()
|
||||
{
|
||||
if (this.IsTran && !this.IsCommit)
|
||||
{
|
||||
Logger.LogDebug("UnitOfWork CommitTran");
|
||||
this.Tenant.CommitTran();
|
||||
this.IsCommit = true;
|
||||
}
|
||||
|
||||
if (this.Db.Ado.Transaction == null && !this.IsClose)
|
||||
{
|
||||
this.Db.Close();
|
||||
this.IsClose = true;
|
||||
}
|
||||
|
||||
return this.IsCommit;
|
||||
}
|
||||
}
|
|
@ -3,22 +3,21 @@ using System.Collections.Concurrent;
|
|||
using System.Reflection;
|
||||
using System.Threading;
|
||||
using Blog.Core.Common.Extensions;
|
||||
using Blog.Core.IRepository.UnitOfWork;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Blog.Core.Repository.UnitOfWork
|
||||
namespace Blog.Core.Repository.UnitOfWorks
|
||||
{
|
||||
public class UnitOfWork : IUnitOfWork
|
||||
public class UnitOfWorkManageManager : IUnitOfWorkManage
|
||||
{
|
||||
private readonly ILogger<UnitOfWork> _logger;
|
||||
private readonly ILogger<UnitOfWorkManageManager> _logger;
|
||||
private readonly ISqlSugarClient _sqlSugarClient;
|
||||
|
||||
private int _tranCount { get; set; }
|
||||
public int TranCount => _tranCount;
|
||||
public readonly ConcurrentStack<string> TranStack = new();
|
||||
|
||||
public UnitOfWork(ISqlSugarClient sqlSugarClient, ILogger<UnitOfWork> logger)
|
||||
public UnitOfWorkManageManager(ISqlSugarClient sqlSugarClient, ILogger<UnitOfWorkManageManager> logger)
|
||||
{
|
||||
_sqlSugarClient = sqlSugarClient;
|
||||
_logger = logger;
|
||||
|
@ -36,6 +35,20 @@ namespace Blog.Core.Repository.UnitOfWork
|
|||
}
|
||||
|
||||
|
||||
public UnitOfWork CreateUnitOfWork()
|
||||
{
|
||||
UnitOfWork uow = new UnitOfWork();
|
||||
uow.Logger = _logger;
|
||||
uow.Db = _sqlSugarClient;
|
||||
uow.Tenant = (ITenant) _sqlSugarClient;
|
||||
uow.IsTran = true;
|
||||
|
||||
uow.Db.Open();
|
||||
uow.Tenant.BeginTran();
|
||||
_logger.LogDebug("UnitOfWork Begin");
|
||||
return uow;
|
||||
}
|
||||
|
||||
public void BeginTran()
|
||||
{
|
||||
lock (this)
|
|
@ -1,6 +1,5 @@
|
|||
using Blog.Core.Common;
|
||||
using Blog.Core.IRepository.Base;
|
||||
using Blog.Core.IRepository.UnitOfWork;
|
||||
using Blog.Core.IServices;
|
||||
using Blog.Core.Model;
|
||||
using Blog.Core.Model.Models;
|
||||
|
@ -8,19 +7,20 @@ using Blog.Core.Services.BASE;
|
|||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Blog.Core.Common.DB;
|
||||
using Blog.Core.Repository.UnitOfWorks;
|
||||
|
||||
namespace Blog.Core.Services
|
||||
{
|
||||
public class GuestbookServices : BaseServices<Guestbook>, IGuestbookServices
|
||||
{
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
private readonly IUnitOfWorkManage _unitOfWorkManage;
|
||||
private readonly IBaseRepository<PasswordLib> _passwordLibRepository;
|
||||
|
||||
private readonly IPasswordLibServices _passwordLibServices;
|
||||
|
||||
public GuestbookServices(IUnitOfWork unitOfWork, IBaseRepository<Guestbook> dal, IBaseRepository<PasswordLib> passwordLibRepository, IPasswordLibServices passwordLibServices)
|
||||
public GuestbookServices(IUnitOfWorkManage unitOfWorkManage, IBaseRepository<Guestbook> dal, IBaseRepository<PasswordLib> passwordLibRepository, IPasswordLibServices passwordLibServices)
|
||||
{
|
||||
_unitOfWork = unitOfWork;
|
||||
_unitOfWorkManage = unitOfWorkManage;
|
||||
_passwordLibRepository = passwordLibRepository;
|
||||
_passwordLibServices = passwordLibServices;
|
||||
}
|
||||
|
@ -31,45 +31,46 @@ namespace Blog.Core.Services
|
|||
{
|
||||
Console.WriteLine($"");
|
||||
Console.WriteLine($"事务操作开始");
|
||||
_unitOfWork.BeginTran();
|
||||
Console.WriteLine($"");
|
||||
|
||||
Console.WriteLine($"insert a data into the table PasswordLib now.");
|
||||
var insertPassword = await _passwordLibRepository.Add(new PasswordLib()
|
||||
using (var uow = _unitOfWorkManage.CreateUnitOfWork())
|
||||
{
|
||||
IsDeleted = false,
|
||||
plAccountName = "aaa",
|
||||
plCreateTime = DateTime.Now
|
||||
});
|
||||
Console.WriteLine($"");
|
||||
|
||||
Console.WriteLine($"insert a data into the table PasswordLib now.");
|
||||
var insertPassword = await _passwordLibRepository.Add(new PasswordLib()
|
||||
{
|
||||
IsDeleted = false,
|
||||
plAccountName = "aaa",
|
||||
plCreateTime = DateTime.Now
|
||||
});
|
||||
|
||||
|
||||
var passwords = await _passwordLibRepository.Query(d => d.IsDeleted == false);
|
||||
Console.WriteLine($"second time : the count of passwords is :{passwords.Count}");
|
||||
var passwords = await _passwordLibRepository.Query(d => d.IsDeleted == false);
|
||||
Console.WriteLine($"second time : the count of passwords is :{passwords.Count}");
|
||||
|
||||
//......
|
||||
//......
|
||||
|
||||
Console.WriteLine($"");
|
||||
var guestbooks = await BaseDal.Query();
|
||||
Console.WriteLine($"first time : the count of guestbooks is :{guestbooks.Count}");
|
||||
Console.WriteLine($"");
|
||||
var guestbooks = await BaseDal.Query();
|
||||
Console.WriteLine($"first time : the count of guestbooks is :{guestbooks.Count}");
|
||||
|
||||
int ex = 0;
|
||||
Console.WriteLine($"\nThere's an exception!!");
|
||||
int throwEx = 1 / ex;
|
||||
int ex = 0;
|
||||
Console.WriteLine($"\nThere's an exception!!");
|
||||
int throwEx = 1 / ex;
|
||||
|
||||
Console.WriteLine($"insert a data into the table Guestbook now.");
|
||||
var insertGuestbook = await BaseDal.Add(new Guestbook()
|
||||
{
|
||||
username = "bbb",
|
||||
blogId = 1,
|
||||
createdate = DateTime.Now,
|
||||
isshow = true
|
||||
});
|
||||
Console.WriteLine($"insert a data into the table Guestbook now.");
|
||||
var insertGuestbook = await BaseDal.Add(new Guestbook()
|
||||
{
|
||||
username = "bbb",
|
||||
blogId = 1,
|
||||
createdate = DateTime.Now,
|
||||
isshow = true
|
||||
});
|
||||
|
||||
guestbooks = await BaseDal.Query();
|
||||
Console.WriteLine($"second time : the count of guestbooks is :{guestbooks.Count}");
|
||||
guestbooks = await BaseDal.Query();
|
||||
Console.WriteLine($"second time : the count of guestbooks is :{guestbooks.Count}");
|
||||
|
||||
|
||||
_unitOfWork.CommitTran();
|
||||
uow.Commit();
|
||||
}
|
||||
|
||||
return new MessageModel<string>()
|
||||
{
|
||||
|
@ -79,7 +80,6 @@ namespace Blog.Core.Services
|
|||
}
|
||||
catch (Exception)
|
||||
{
|
||||
_unitOfWork.RollbackTran();
|
||||
var passwords = await _passwordLibRepository.Query();
|
||||
Console.WriteLine($"third time : the count of passwords is :{passwords.Count}");
|
||||
|
||||
|
@ -160,7 +160,7 @@ namespace Blog.Core.Services
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 测试无事务 Mandatory传播机制报错
|
||||
|
@ -207,7 +207,5 @@ namespace Blog.Core.Services
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -1,7 +1,6 @@
|
|||
using Blog.Core.Common;
|
||||
using Blog.Core.Common.Helper;
|
||||
using Blog.Core.IRepository.Base;
|
||||
using Blog.Core.IRepository.UnitOfWork;
|
||||
using Blog.Core.IServices;
|
||||
using Blog.Core.Model;
|
||||
using Blog.Core.Model.Models;
|
||||
|
@ -11,6 +10,7 @@ using Microsoft.Extensions.Logging;
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Blog.Core.Repository.UnitOfWorks;
|
||||
|
||||
namespace Blog.Core.Services
|
||||
{
|
||||
|
@ -19,11 +19,11 @@ namespace Blog.Core.Services
|
|||
/// </summary>
|
||||
public class WeChatCompanyServices : BaseServices<WeChatCompany>, IWeChatCompanyServices
|
||||
{
|
||||
readonly IUnitOfWork _unitOfWork;
|
||||
readonly IUnitOfWorkManage _unitOfWorkManage;
|
||||
readonly ILogger<WeChatCompanyServices> _logger;
|
||||
public WeChatCompanyServices(IUnitOfWork unitOfWork, ILogger<WeChatCompanyServices> logger)
|
||||
public WeChatCompanyServices(IUnitOfWorkManage unitOfWorkManage, ILogger<WeChatCompanyServices> logger)
|
||||
{
|
||||
this._unitOfWork = unitOfWork;
|
||||
this._unitOfWorkManage = unitOfWorkManage;
|
||||
this._logger = logger;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
using Blog.Core.Common;
|
||||
using Blog.Core.Common.Helper;
|
||||
using Blog.Core.IRepository.Base;
|
||||
using Blog.Core.IRepository.UnitOfWork;
|
||||
using Blog.Core.IServices;
|
||||
using Blog.Core.Model;
|
||||
using Blog.Core.Model.Models;
|
||||
|
@ -11,6 +10,7 @@ using Microsoft.Extensions.Logging;
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Blog.Core.Repository.UnitOfWorks;
|
||||
|
||||
namespace Blog.Core.Services
|
||||
{
|
||||
|
@ -19,11 +19,11 @@ namespace Blog.Core.Services
|
|||
/// </summary>
|
||||
public class WeChatConfigServices : BaseServices<WeChatConfig>, IWeChatConfigServices
|
||||
{
|
||||
readonly IUnitOfWork _unitOfWork;
|
||||
readonly IUnitOfWorkManage _unitOfWorkManage;
|
||||
readonly ILogger<WeChatConfigServices> _logger;
|
||||
public WeChatConfigServices(IUnitOfWork unitOfWork, ILogger<WeChatConfigServices> logger)
|
||||
public WeChatConfigServices(IUnitOfWorkManage unitOfWorkManage, ILogger<WeChatConfigServices> logger)
|
||||
{
|
||||
this._unitOfWork = unitOfWork;
|
||||
this._unitOfWorkManage = unitOfWorkManage;
|
||||
this._logger = logger;
|
||||
}
|
||||
public async Task<MessageModel<WeChatApiDto>> GetToken(string publicAccount)
|
||||
|
@ -831,17 +831,17 @@ namespace Blog.Core.Services
|
|||
|
||||
try
|
||||
{
|
||||
_unitOfWork.BeginTran();
|
||||
_unitOfWorkManage.BeginTran();
|
||||
await BaseDal.Db.Updateable<WeChatQR>(ticket).ExecuteCommandAsync();
|
||||
if (isNewBind)
|
||||
await BaseDal.Db.Insertable<WeChatSub>(bindUser).ExecuteCommandAsync();
|
||||
else
|
||||
await BaseDal.Db.Updateable<WeChatSub>(bindUser).ExecuteCommandAsync();
|
||||
_unitOfWork.CommitTran();
|
||||
_unitOfWorkManage.CommitTran();
|
||||
}
|
||||
catch
|
||||
{
|
||||
_unitOfWork.RollbackTran();
|
||||
_unitOfWorkManage.RollbackTran();
|
||||
throw;
|
||||
}
|
||||
return @$"<xml><ToUserName><![CDATA[{weChat.FromUserName}]]></ToUserName>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
using Blog.Core.Common;
|
||||
using Blog.Core.Common.Helper;
|
||||
using Blog.Core.IRepository.Base;
|
||||
using Blog.Core.IRepository.UnitOfWork;
|
||||
using Blog.Core.IServices;
|
||||
using Blog.Core.Model;
|
||||
using Blog.Core.Model.Models;
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
using Blog.Core.Common;
|
||||
using Blog.Core.Common.Helper;
|
||||
using Blog.Core.IRepository.Base;
|
||||
using Blog.Core.IRepository.UnitOfWork;
|
||||
using Blog.Core.IServices;
|
||||
using Blog.Core.Model;
|
||||
using Blog.Core.Model.Models;
|
||||
|
|
|
@ -10,10 +10,8 @@ using Blog.Core.Common.LogHelper;
|
|||
using Blog.Core.Common.Seed;
|
||||
using Blog.Core.Extensions;
|
||||
using Blog.Core.IRepository.Base;
|
||||
using Blog.Core.IRepository.UnitOfWork;
|
||||
using Blog.Core.Repository.Base;
|
||||
using Blog.Core.Repository.MongoRepository;
|
||||
using Blog.Core.Repository.UnitOfWork;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.Controllers;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
|
Loading…
Reference in New Issue
Block a user