UnitOfWork简化事务操作

This commit is contained in:
LemonNoCry 2022-10-14 11:32:51 +08:00
parent 07b692f0cd
commit dabbc7ea3b
19 changed files with 188 additions and 133 deletions

View File

@ -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>

View File

@ -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();
}
}

View File

@ -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

View File

@ -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}");

View File

@ -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);
}

View File

@ -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>

View File

@ -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();

View File

@ -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();
}

View File

@ -29,8 +29,4 @@
<ProjectReference Include="..\Blog.Core.Model\Blog.Core.Model.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="UnitOfWork\" />
</ItemGroup>
</Project>

View File

@ -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)
{
}

View File

@ -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();

View 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;
}
}

View File

@ -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)

View File

@ -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;
}
}
}

View File

@ -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;
}

View File

@ -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>

View File

@ -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;

View File

@ -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;

View File

@ -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;