mirror of
https://github.com/nsnail/NetAdmin.git
synced 2025-05-04 12:02:51 +08:00
30 lines
906 B
C#
30 lines
906 B
C#
namespace NetAdmin.Host.Extensions;
|
|
|
|
/// <summary>
|
|
/// 工作单元管理器扩展类
|
|
/// </summary>
|
|
public static class UnitOfWorkManagerExtensions
|
|
{
|
|
/// <summary>
|
|
/// 事务操作
|
|
/// </summary>
|
|
public static async Task AtomicOperateAsync(this UnitOfWorkManager me, Func<Task> handle)
|
|
{
|
|
var logger = LogHelper.Get<UnitOfWorkManager>();
|
|
using var unitOfWork = me.Begin();
|
|
var hashCode = unitOfWork.GetHashCode();
|
|
try {
|
|
#if DEBUG
|
|
logger?.Debug($"{Ln.开始事务}: {hashCode}");
|
|
#endif
|
|
await handle().ConfigureAwait(false);
|
|
unitOfWork.Commit();
|
|
logger?.Info($"{Ln.事务已提交}: {hashCode}");
|
|
}
|
|
catch {
|
|
unitOfWork.Rollback();
|
|
logger?.Warn($"{Ln.事务已回滚}: {hashCode}");
|
|
throw;
|
|
}
|
|
}
|
|
} |