Переглянути джерело

添加 SqlSugar 支持并优化异常处理

在 `GlobalUsings.cs` 中引入 `SqlSugar` 库的全局使用声明。
调整 `ExceptionHandlingMiddleware.cs` 中的命名空间定义,确保符合 C# 语法。
为 `InvokeAsync` 和 `HandleExceptionAsync` 方法添加 `ISqlSugarClient db` 参数,以便在中间件中处理数据库事务。
在异常处理时,确保能够正确回滚数据库事务。
移除 `Program.cs` 中的 Autofac 容器设置,简化依赖注入实现。
LEIYI 2 місяців тому
батько
коміт
3d1f505290

+ 1 - 0
OASystem/OASystem.Api/GlobalUsings.cs

@@ -36,5 +36,6 @@ global using System.Reflection;
 global using System.Security.Cryptography;
 global using System.Text;
 global using System.Text.RegularExpressions;
+global using SqlSugar;
 
 

+ 18 - 5
OASystem/OASystem.Api/Middlewares/ExceptionHandlingMiddleware.cs

@@ -1,4 +1,5 @@
-namespace OASystem.API.Middlewares
+
+namespace OASystem.API.Middlewares
 {
     /// <summary>
     /// 全局异常捕获中间件
@@ -23,8 +24,9 @@
         /// 执行中间件
         /// </summary>
         /// <param name="httpContext"></param>
+        /// <param name="db"></param>
         /// <returns></returns>
-        public async Task InvokeAsync(HttpContext httpContext)
+        public async Task InvokeAsync(HttpContext httpContext, ISqlSugarClient db)
         {
             try
             {
@@ -32,7 +34,7 @@
             }
             catch (Exception ex)
             {
-                await HandleExceptionAsync(httpContext, ex); // 捕获异常了 在HandleExceptionAsync中处理
+                await HandleExceptionAsync(httpContext, ex, db); // 捕获异常了 在HandleExceptionAsync中处理
             }
         }
 
@@ -41,16 +43,27 @@
         /// </summary>
         /// <param name="context"></param>
         /// <param name="exception"></param>
+        /// <param name="db"></param>
         /// <returns></returns>
-        private async Task HandleExceptionAsync(HttpContext context, Exception exception)
+        private async Task HandleExceptionAsync(HttpContext context, Exception exception, ISqlSugarClient db)
         {
+            //验证异常是否存在异常处理,存在则回滚事务
+            if (db != null && db.Ado.Transaction != null)
+            {
+                db.Ado.RollbackTran();
+            }
+
+
             context.Response.ContentType = "application/json";  // 返回json 类型
             var response = context.Response;
             var errorResponse = new JsonView
             {
                 Code = StatusCodes.Status500InternalServerError,
                 Data = ""
-            };  // 自定义的异常错误信息类型
+            };  
+            
+            
+            // 自定义的异常错误信息类型
             switch (exception)
             {
                 case ApplicationException ex:

+ 0 - 1
OASystem/OASystem.Api/Program.cs

@@ -392,7 +392,6 @@ builder.Services.TryAddSingleton(typeof(CommonService));
 
 var app = builder.Build();
 
-
 AutofacIocManager.Instance.Container = app.UseHostFiltering().ApplicationServices.GetAutofacRoot();//AutofacIocManager
 
 // Configure the HTTP request pipeline.