ソースを参照

修复 同步行政区域 始终进入大数据量写入逻辑,并对其判断逻辑进行优化
(上一提交把 && 打成 || 了)

夜鹰 1 年間 前
親
コミット
169815193c

+ 8 - 6
Admin.NET/Admin.NET.Core/Service/Region/SysRegionService.cs

@@ -157,7 +157,7 @@ public class SysRegionService : IDynamicApiController, ITransient
             await _sysRegionRep.DeleteAsync(u => u.Id > 0);
             await SyncByMap(syncLevel);
         }, err => {
-            throw Oops.Oh(ErrorCodeEnum.R2005);
+            throw Oops.Oh(ErrorCodeEnum.R2005, err.Message);
         });
         
 
@@ -352,14 +352,16 @@ public class SysRegionService : IDynamicApiController, ITransient
             
             // 按省份同步快速写入提升同步效率,全部一次性写入容易出现从统计局获取数据失败
             // 仅当数据量大于1000或非Oracle数据库时采用大数据量写入方式(SqlSugar官方已说明,数据量小于1000时,其性能不如普通插入, oracle此方法不支持事务)
-            if (list.Count > 1000 || _sysRegionRep.Context.CurrentConnectionConfig.DbType != SqlSugar.DbType.Oracle)
+            if (list.Count > 1000 && _sysRegionRep.Context.CurrentConnectionConfig.DbType != SqlSugar.DbType.Oracle)
             {
                 // 执行大数据量写入
-                var t = _sysRegionRep.Context.Fastest<SysRegion>().BulkCopyAsync(list);
-
-                // 若写入失败则尝试普通插入方式
-                if (t.Exception != null)
+                try
+                {
+                    await _sysRegionRep.Context.Fastest<SysRegion>().BulkCopyAsync(list);
+                }
+                catch(SqlSugarException)
                 {
+                    // 若写入失败则尝试普通插入方式
                     await _sysRegionRep.InsertRangeAsync(list);
                 }
             }