瀏覽代碼

部署可访问版

Pengxy 3 月之前
父節點
當前提交
35b325e1a4

+ 26 - 26
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -16,7 +16,6 @@ using Business.StructuredDB.SaleFcst;
 using Business.StructuredDB.WMS;
 using Business.SystemJob;
 using Business.SystemJobManagement;
-using EFCore.BulkExtensions;
 using Microsoft.EntityFrameworkCore;
 using Microsoft.EntityFrameworkCore.Metadata.Internal;
 using MongoDB.Driver;
@@ -38,8 +37,6 @@ using Volo.Abp.MultiTenancy;
 using Volo.Abp.ObjectMapping;
 using Volo.Abp.Uow;
 using ZstdSharp.Unsafe;
-using static Azure.Core.HttpHeader;
-using static NetTopologySuite.Geometries.Utilities.GeometryMapper;
 
 namespace Business.Replenishment
 {
@@ -736,7 +733,7 @@ namespace Business.Replenishment
                 try
                 {
                     var toDelete = _businessDbContext.ReplenishmentAnnualProduction.Where(a => a.Year == input.year && a.factory_id == input.factory_id).ToList();
-                    await _businessDbContext.BulkDeleteAsync(toDelete);
+                    _businessDbContext.RemoveRange(toDelete); await _businessDbContext.SaveChangesAsync();
                     await _businessDbContext.AddRangeAsync(annualProductionOutlines);
                     await _businessDbContext.SaveChangesAsync();
                     //await CalcLongPeriodItemPR(input);
@@ -1852,18 +1849,18 @@ namespace Business.Replenishment
             await _mysql_mes_moentry.HardDeleteAsync(deletedEntryList);
             var examine_result = _mysql_examine_result.GetListAsync(a => workOrderDelete.Contains(a.morder_no) && a.factory_id == input.factory_id).Result;
             List<srm_po_occupy> occupy = await _mysql_srm_po_occupy.GetListAsync(s => workOrderDelete.Contains(s.morder_mo));
-            _businessDbContext.BulkDelete(occupy);
+            _businessDbContext.RemoveRange(occupy); _businessDbContext.SaveChanges();
             //清理工单占用
             List<mes_mooccupy> mooccupy = await _mysql_mes_mooccupy.GetListAsync(s => deletedIds.Contains(s.moo_id.GetValueOrDefault()));
             if (mooccupy.Any())
             {
-                _businessDbContext.BulkDelete(mooccupy);
+                _businessDbContext.RemoveRange(mooccupy); _businessDbContext.SaveChanges();
             }
             //清理掉库存占用
             var itemstockoccupy = _mysql_ic_item_stockoccupy.GetListAsync(s => workOrderDelete.Contains(s.morder_mo)).Result;
             if (itemstockoccupy.Any())
             {
-                _businessDbContext.BulkDelete(itemstockoccupy);
+                _businessDbContext.RemoveRange(itemstockoccupy); _businessDbContext.SaveChanges();
             }
             if (examine_result.Any())
             {
@@ -3640,18 +3637,18 @@ namespace Business.Replenishment
             //await _mysql_mes_moentry.HardDeleteAsync(deletedEntryList);
             //var examine_result = _mysql_examine_result.GetListAsync(a => workOrderDelete.Contains(a.morder_no) && a.factory_id == input.factory_id).Result;
             //List<srm_po_occupy> occupy = await _mysql_srm_po_occupy.GetListAsync(s => workOrderDelete.Contains(s.morder_mo));
-            //_businessDbContext.BulkDelete(occupy);
+            //_businessDbContext.RemoveRange(occupy); _businessDbContext.SaveChanges();
             ////清理工单占用
             //List<mes_mooccupy> mooccupy = await _mysql_mes_mooccupy.GetListAsync(s => deletedIds.Contains(s.moo_id.GetValueOrDefault()));
             //if (mooccupy.Any())
             //{
-            //    _businessDbContext.BulkDelete(mooccupy);
+            //    _businessDbContext.RemoveRange(mooccupy); _businessDbContext.SaveChanges();
             //}
             ////清理掉库存占用
             //var itemstockoccupy = _mysql_ic_item_stockoccupy.GetListAsync(s => workOrderDelete.Contains(s.morder_mo)).Result;
             //if (itemstockoccupy.Any())
             //{
-            //    _businessDbContext.BulkDelete(itemstockoccupy);
+            //    _businessDbContext.RemoveRange(itemstockoccupy); _businessDbContext.SaveChanges();
             //}
             //await _mysql_bom_child_examine.HardDeleteAsync(a => examine_result.Select(b => b.Id).ToList().Contains(a.examine_id.Value) && a.factory_id == input.factory_id);
             //await _mysql_examine_result.HardDeleteAsync(examine_result);
@@ -3805,12 +3802,12 @@ namespace Business.Replenishment
             {
                 try
                 {
-                    _businessDbContext.BulkDelete(delMstlist);
-                    _businessDbContext.BulkDelete(delDtllist);
-                    _businessDbContext.BulkDelete(delpolist);
-                    _businessDbContext.BulkDelete(delpllist);
-                    _businessDbContext.BulkDelete(delocclist);
-                    _businessDbContext.BulkDelete(delprlist);
+                    _businessDbContext.RemoveRange(delMstlist); _businessDbContext.SaveChanges();
+                    _businessDbContext.RemoveRange(delDtllist); _businessDbContext.SaveChanges();
+                    _businessDbContext.RemoveRange(delpolist); _businessDbContext.SaveChanges();
+                    _businessDbContext.RemoveRange(delpllist); _businessDbContext.SaveChanges();
+                    _businessDbContext.RemoveRange(delocclist); _businessDbContext.SaveChanges();
+                    _businessDbContext.RemoveRange(delprlist); _businessDbContext.SaveChanges();
                     await unitOfWork.CompleteAsync();
                 }
                 catch (Exception e)
@@ -4053,12 +4050,13 @@ namespace Business.Replenishment
 
             if (deleteList.Count > 0)
             {
-                await _businessDbContext.BulkDeleteAsync(deleteList);
+                _businessDbContext.RemoveRange(deleteList); await _businessDbContext.SaveChangesAsync();
                 _workOrdMaster.Delete(workOrdMasterList.Where(a => deleteList.Select(b => b.ProductionOrder).ToList().Contains(a.WorkOrd)).ToList());
                 _workOrdDetail.Delete(workOrdDetailList.Where(a => deleteList.Select(b => b.ProductionOrder).ToList().Contains(a.WorkOrd)).ToList());
                 _workOrdRouting.Delete(workOrdRoutingList.Where(a => deleteList.Select(b => b.ProductionOrder).ToList().Contains(a.WorkOrd)).ToList());
-                await _businessDbContext.BulkDeleteAsync(mesmorderList.Where(a => deleteList.Select(b => b.ProductionOrder).ToList().Contains(a.morder_no)).ToList());
-                await _businessDbContext.BulkDeleteAsync(mesmorderEntryList.Where(a => deleteList.Select(b => b.ProductionOrder).ToList().Contains(a.moentry_mono)).ToList());
+                _businessDbContext.RemoveRange(mesmorderList.Where(a => deleteList.Select(b => b.ProductionOrder).ToList().Contains(a.morder_no)).ToList());
+                _businessDbContext.RemoveRange(mesmorderEntryList.Where(a => deleteList.Select(b => b.ProductionOrder).ToList().Contains(a.moentry_mono)).ToList());
+                await _businessDbContext.SaveChangesAsync();
             }
             if (updateList.Count > 0)
             {
@@ -4113,6 +4111,7 @@ namespace Business.Replenishment
                 _workOrdRouting.Update(itemRoutingUpdate);
                 _businessDbContext.UpdateRange(itemMesmorderList);
                 _businessDbContext.UpdateRange(itemMesmorderEntryList);
+                await _businessDbContext.SaveChangesAsync();
             }
 
             //补货
@@ -4900,6 +4899,7 @@ namespace Business.Replenishment
             }
             _businessDbContext.UpdateRange(works);
             _businessDbContext.UpdateRange(weekPlan);
+            _businessDbContext.SaveChanges();
         }
 
         /// <summary>
@@ -5258,26 +5258,26 @@ namespace Business.Replenishment
                 //    }
                 //}
                 List<srm_po_occupy> occupy = await _mysql_srm_po_occupy.GetListAsync(s => monolist.Contains(s.morder_mo));
-                _businessDbContext.BulkDelete(occupy);
+                _businessDbContext.RemoveRange(occupy); _businessDbContext.SaveChanges();
                 //if (updatelist.Any())
                 //{
                 //    _businessDbContext.UpdateRange(updatelist);
                 //}
                 //if (dellist.Any())
                 //{
-                //    _businessDbContext.BulkDelete(dellist);
+                //    _businessDbContext.RemoveRange(dellist); _businessDbContext.SaveChanges();
                 //}
                 //清理工单占用
                 List<mes_mooccupy> mooccupy = await _mysql_mes_mooccupy.GetListAsync(s => Mes_Morders.Select(c => c.Id).Contains(s.moo_id.GetValueOrDefault()));
                 if (mooccupy.Any())
                 {
-                    _businessDbContext.BulkDelete(mooccupy);
+                    _businessDbContext.RemoveRange(mooccupy); _businessDbContext.SaveChanges();
                 }
                 //清理掉库存占用
                 var itemstockoccupy = _mysql_ic_item_stockoccupy.GetListAsync(s => monolist.Contains(s.morder_mo)).Result;
                 if (itemstockoccupy.Any())
                 {
-                    _businessDbContext.BulkDelete(itemstockoccupy);
+                    _businessDbContext.RemoveRange(itemstockoccupy); _businessDbContext.SaveChanges();
                 }
                 //清理锁定期外的排程数据.
                 //var periodList = _periodSequenceDet.Select(s => monolist.Contains(s.WorkOrds));
@@ -5943,7 +5943,7 @@ namespace Business.Replenishment
                         }
                         if (delWorkOrddetails.Any())
                         {
-                            _businessDbContext.BulkDelete(delWorkOrddetails);
+                            _businessDbContext.RemoveRange(delWorkOrddetails); _businessDbContext.SaveChanges();
                         }
                         if (mainWorkOrdDetails.Any())
                         {
@@ -6295,7 +6295,7 @@ namespace Business.Replenishment
             var mysql_mes_mooccupy = _mysql_mes_mooccupy.GetListAsync(x => soentry_id.Select(p => p.Id).Contains(x.moo_id_billid.Value)).Result;
             if (mysql_mes_mooccupy.Count > 0)
             {
-                await _businessDbContext.BulkDeleteAsync(mysql_mes_mooccupy);
+                _businessDbContext.RemoveRange(mysql_mes_mooccupy); await _businessDbContext.SaveChangesAsync();
             }
             /*var srm_pr_main = _mysql_srm_pr_main.GetListAsync(x => soentry_id.Select(p => p.Id).Contains(x.sentry_id.GetValueOrDefault())).Result;
             if (srm_pr_main.Count > 0)
@@ -6834,7 +6834,7 @@ namespace Business.Replenishment
                 }
                 if (deleteList.Any())
                 {
-                    _businessDbContext.BulkDelete(deleteList);
+                    _businessDbContext.RemoveRange(deleteList); _businessDbContext.SaveChanges();
                 }
                 if (addList.Any())
                 {

+ 13 - 11
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -17,7 +17,6 @@ using Business.StructuredDB.Replenishment;
 using Business.StructuredDB.SaleFcst;
 using Business.StructuredDB.WMS;
 using Business.SystemJobManagement;
-using EFCore.BulkExtensions;
 using Microsoft.EntityFrameworkCore;
 using MongoDB.Driver;
 using MongoDB.Driver.Linq;
@@ -2206,7 +2205,7 @@ namespace Business.ResourceExamineManagement
             var mysql_mes_mooccupy = _mysql_mes_mooccupy.GetListAsync(x => soentry_id.Select(p => p.Id).Contains(x.moo_id_billid.Value)).Result;
             if (mysql_mes_mooccupy.Count > 0)
             {
-                await _businessDbContext.BulkDeleteAsync(mysql_mes_mooccupy);
+                _businessDbContext.RemoveRange(mysql_mes_mooccupy); await _businessDbContext.SaveChangesAsync();
             }
             /*var srm_pr_main = _mysql_srm_pr_main.GetListAsync(x => soentry_id.Select(p => p.Id).Contains(x.sentry_id.GetValueOrDefault())).Result;
             if (srm_pr_main.Count > 0)
@@ -3078,27 +3077,27 @@ namespace Business.ResourceExamineManagement
                 }*/
                 #endregion
                 List<srm_po_occupy> occupy = await _mysql_srm_po_occupy.GetListAsync(s => monolist.Contains(s.morder_mo));
-                _businessDbContext.BulkDelete(occupy);
+                _businessDbContext.RemoveRange(occupy); _businessDbContext.SaveChanges();
                 /*if (updatelist.Any())
                 {
                     _businessDbContext.UpdateRange(updatelist);
                 }
                 if (dellist.Any())
                 {
-                    _businessDbContext.BulkDelete(dellist);
+                    _businessDbContext.RemoveRange(dellist); _businessDbContext.SaveChanges();
                 }*/
 
                 //清理工单占用
                 List<mes_mooccupy> mooccupy = await _mysql_mes_mooccupy.GetListAsync(s => Mes_Morders.Select(c => c.Id).Contains(s.moo_id.GetValueOrDefault()));
                 if (mooccupy.Any())
                 {
-                    _businessDbContext.BulkDelete(mooccupy);
+                    _businessDbContext.RemoveRange(mooccupy); _businessDbContext.SaveChanges();
                 }
                 //清理掉库存占用
                 var itemstockoccupy = _mysql_ic_item_stockoccupy.GetListAsync(s => monolist.Contains(s.morder_mo)).Result;
                 if (itemstockoccupy.Any())
                 {
-                    _businessDbContext.BulkDelete(itemstockoccupy);
+                    _businessDbContext.RemoveRange(itemstockoccupy); _businessDbContext.SaveChanges();
                 }
                 //清理锁定期外的排程数据.工单排产会清理重排
                 /*var periodList = _periodSequenceDet.Select(s => monolist.Contains(s.WorkOrds));
@@ -3174,6 +3173,7 @@ namespace Business.ResourceExamineManagement
                     try
                     {
                         _businessDbContext.UpdateRange(morders);
+                        await _businessDbContext.SaveChangesAsync();
                     }
                     catch (Exception e)
                     {
@@ -4307,6 +4307,7 @@ namespace Business.ResourceExamineManagement
                     }
                 }
                 _businessDbContext.UpdateRange(workOrds);
+                await _businessDbContext.SaveChangesAsync();
             }
             List<WorkOrdDetail> mainWorkOrdDetails = new List<WorkOrdDetail>();
             List<WorkOrdRouting> mainWorkOrdRoutings = new List<WorkOrdRouting>();
@@ -4415,7 +4416,7 @@ namespace Business.ResourceExamineManagement
                     
                     if (delWorkOrddetails.Any())
                     {
-                        _businessDbContext.BulkDelete(delWorkOrddetails);
+                        _businessDbContext.RemoveRange(delWorkOrddetails); _businessDbContext.SaveChanges();
                     }
                     if (mainWorkOrdDetails.Any())
                     {
@@ -4424,7 +4425,7 @@ namespace Business.ResourceExamineManagement
                     }
                     if (workOrdRoutings.Any())
                     {
-                        _businessDbContext.BulkDelete(workOrdRoutings);
+                        _businessDbContext.RemoveRange(workOrdRoutings); _businessDbContext.SaveChanges();
                     }
                     if (mainWorkOrdRoutings.Any())
                     {
@@ -5199,7 +5200,7 @@ namespace Business.ResourceExamineManagement
                 }
                 if (deleteList.Any())
                 {
-                    _businessDbContext.BulkDelete(deleteList);
+                    _businessDbContext.RemoveRange(deleteList); _businessDbContext.SaveChanges();
                 }
                 if (addList.Any())
                 {
@@ -6550,6 +6551,7 @@ namespace Business.ResourceExamineManagement
                 }
                 //_businessDbContext.UpdateRange(list);
                 _businessDbContext.ic_bom_child.UpdateRange(list);
+                await _businessDbContext.SaveChangesAsync();
             }
             return "ok";
         }
@@ -6580,7 +6582,7 @@ namespace Business.ResourceExamineManagement
                     var refBomList = _mysql_b_bom_pretreatment.GetListAsync(s => refList.Select(c => c.sourceid).Contains(s.sourceid)).Result;
                     if (refBomList.Any())
                     {
-                        await _businessDbContext.BulkDeleteAsync(refBomList);
+                        _businessDbContext.RemoveRange(refBomList); await _businessDbContext.SaveChangesAsync();
                     }
                     var boms = _ic_bom.GetListAsync(s => refList.Select(c => c.sourceid).Contains(s.mysql_id)).Result;
                     if (boms.Any())
@@ -7187,7 +7189,7 @@ namespace Business.ResourceExamineManagement
                     });
                     _businessDbContext.UpdateRange(historyversionList);
                 }
-
+                await _businessDbContext.SaveChangesAsync();
 
                 var weekday = (int)DateTime.Now.DayOfWeek;
                 int adddays = weekday == 0 ? 1 : 8 - weekday;

+ 0 - 1
MicroServices/Business/Business.Application/SystemJobManagement/SystemJobAppService.cs

@@ -7,7 +7,6 @@ using Business.ResourceExamineManagement;
 using Business.ResourceExamineManagement.Dto;
 using Business.StructuredDB.MES;
 using Business.SystemJob;
-using EFCore.BulkExtensions;
 using Microsoft.EntityFrameworkCore;
 using Microsoft.Extensions.Configuration;
 using MongoDB.Driver.Linq;

+ 2 - 5
MicroServices/Business/Business.Application/VSM/VSMAppService.cs

@@ -1,5 +1,4 @@
-using Azure;
-using Business.Core.Enum;
+using Business.Core.Enum;
 using Business.Core.Utilities;
 using Business.Domain;
 using Business.Dto;
@@ -12,13 +11,11 @@ using Business.StructuredDB.MES.IC;
 using Business.StructuredDB.SaleFcst;
 using Business.StructuredDB.WMS;
 using Business.VSM;
-using EFCore.BulkExtensions;
 using MathNet.Numerics.LinearAlgebra.Factorization;
 using Microsoft.EntityFrameworkCore;
 using Microsoft.EntityFrameworkCore.Metadata.Internal;
 using Microsoft.Extensions.Configuration;
 using MongoDB.Driver.Linq;
-using NetTopologySuite.Mathematics;
 using Newtonsoft.Json;
 using NLog;
 using System;
@@ -1293,7 +1290,7 @@ namespace Business.VSMManagement
                     day--;
                 }
             });
-            _businessDbContext.BulkInsert(daysHist);
+            _businessDbContext.AddRange(daysHist); _businessDbContext.SaveChanges();
             return "ok";
         }
     }

+ 0 - 1
MicroServices/Business/Business.EntityFrameworkCore/Business.EntityFrameworkCore.csproj

@@ -10,7 +10,6 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="EFCore.BulkExtensions" Version="6.0.3" />
     <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.5">
       <PrivateAssets>all</PrivateAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>

+ 12 - 6
MicroServices/Business/Business.EntityFrameworkCore/Repository/SqlRepositories/ExtRASqlRepository.cs

@@ -12,7 +12,6 @@ using System.Collections;
 using Business.EntityFrameworkCore;
 using System.Linq.Expressions;
 using System.Data.SqlClient;
-using EFCore.BulkExtensions;
 
 namespace Business.EntityFrameworkCore.SqlRepositories
 {
@@ -49,14 +48,21 @@ namespace Business.EntityFrameworkCore.SqlRepositories
 
         public int Update(Expression<Func<T, bool>> whereLambda, Expression<Func<T, T>> entity)
         {
-            _dbContext.Set<T>().Where(whereLambda).BatchUpdate(entity);
-            return  _dbContext.SaveChanges();
+            var items = _dbContext.Set<T>().Where(whereLambda).ToList();
+            var updateFunc = entity.Compile();
+            foreach (var item in items)
+            {
+                var updated = updateFunc(item);
+                _dbContext.Entry(item).CurrentValues.SetValues(updated);
+            }
+            return _dbContext.SaveChanges();
         }
 
-        public  int Delete(Expression<Func<T, bool>> whereLambda)
+        public int Delete(Expression<Func<T, bool>> whereLambda)
         {
-            _dbContext.Set<T>().Where(whereLambda).BatchDelete();
-            return  _dbContext.SaveChanges();
+            var items = _dbContext.Set<T>().Where(whereLambda).ToList();
+            _dbContext.Set<T>().RemoveRange(items);
+            return _dbContext.SaveChanges();
         }
 
         public int Delete(List<T> entitylist)

+ 12 - 6
MicroServices/Business/Business.EntityFrameworkCore/Repository/SqlRepositories/ExtSqlRepository.cs

@@ -12,7 +12,6 @@ using System.Collections;
 using Business.EntityFrameworkCore;
 using System.Linq.Expressions;
 using System.Data.SqlClient;
-using EFCore.BulkExtensions;
 
 namespace Business.EntityFrameworkCore.SqlRepositories
 {
@@ -49,14 +48,21 @@ namespace Business.EntityFrameworkCore.SqlRepositories
 
         public int Update(Expression<Func<T, bool>> whereLambda, Expression<Func<T, T>> entity)
         {
-            _dbContext.Set<T>().Where(whereLambda).BatchUpdate(entity);
-            return  _dbContext.SaveChanges();
+            var items = _dbContext.Set<T>().Where(whereLambda).ToList();
+            var updateFunc = entity.Compile();
+            foreach (var item in items)
+            {
+                var updated = updateFunc(item);
+                _dbContext.Entry(item).CurrentValues.SetValues(updated);
+            }
+            return _dbContext.SaveChanges();
         }
 
-        public  int Delete(Expression<Func<T, bool>> whereLambda)
+        public int Delete(Expression<Func<T, bool>> whereLambda)
         {
-            _dbContext.Set<T>().Where(whereLambda).BatchDelete();
-            return  _dbContext.SaveChanges();
+            var items = _dbContext.Set<T>().Where(whereLambda).ToList();
+            _dbContext.Set<T>().RemoveRange(items);
+            return _dbContext.SaveChanges();
         }
 
         public int Delete(List<T> entitylist)

+ 9 - 3
MicroServices/Business/Business.EntityFrameworkCore/Repository/SqlRepositories/SqeRepository.cs

@@ -12,7 +12,6 @@ using System.Collections;
 using Business.EntityFrameworkCore;
 using System.Linq.Expressions;
 using System.Data.SqlClient;
-using EFCore.BulkExtensions;
 using Microsoft.EntityFrameworkCore.Storage;
 
 namespace Business.EntityFrameworkCore.SqlRepositories
@@ -104,13 +103,20 @@ namespace Business.EntityFrameworkCore.SqlRepositories
 
         public int Update(Expression<Func<T, bool>> whereLambda, Expression<Func<T, T>> entity)
         {
-            _dbContext.Set<T>().Where(whereLambda).BatchUpdate(entity);
+            var items = _dbContext.Set<T>().Where(whereLambda).ToList();
+            var updateFunc = entity.Compile();
+            foreach (var item in items)
+            {
+                var updated = updateFunc(item);
+                _dbContext.Entry(item).CurrentValues.SetValues(updated);
+            }
             return _dbContext.SaveChanges();
         }
 
         public int Delete(Expression<Func<T, bool>> whereLambda)
         {
-            _dbContext.Set<T>().Where(whereLambda).BatchDelete();
+            var items = _dbContext.Set<T>().Where(whereLambda).ToList();
+            _dbContext.Set<T>().RemoveRange(items);
             return _dbContext.SaveChanges();
         }
 

+ 12 - 6
MicroServices/Business/Business.EntityFrameworkCore/Repository/SqlRepositories/SqlRepository.cs

@@ -12,7 +12,6 @@ using System.Collections;
 using Business.EntityFrameworkCore;
 using System.Linq.Expressions;
 using System.Data.SqlClient;
-using EFCore.BulkExtensions;
 
 namespace Business.EntityFrameworkCore.SqlRepositories
 {
@@ -49,14 +48,21 @@ namespace Business.EntityFrameworkCore.SqlRepositories
 
         public int Update(Expression<Func<T, bool>> whereLambda, Expression<Func<T, T>> entity)
         {
-            _dbContext.Set<T>().Where(whereLambda).BatchUpdate(entity);
-            return  _dbContext.SaveChanges();
+            var items = _dbContext.Set<T>().Where(whereLambda).ToList();
+            var updateFunc = entity.Compile();
+            foreach (var item in items)
+            {
+                var updated = updateFunc(item);
+                _dbContext.Entry(item).CurrentValues.SetValues(updated);
+            }
+            return _dbContext.SaveChanges();
         }
 
-        public  int Delete(Expression<Func<T, bool>> whereLambda)
+        public int Delete(Expression<Func<T, bool>> whereLambda)
         {
-            _dbContext.Set<T>().Where(whereLambda).BatchDelete();
-            return  _dbContext.SaveChanges();
+            var items = _dbContext.Set<T>().Where(whereLambda).ToList();
+            _dbContext.Set<T>().RemoveRange(items);
+            return _dbContext.SaveChanges();
         }
 
         public int Delete(List<T> entitylist)

+ 1 - 1
MicroServices/Business/Business.Host/Business.Host.csproj

@@ -17,7 +17,7 @@
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
     </PackageReference>
     <PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="6.0.3" />
-    <PackageReference Include="MySqlConnector" Version="2.5.0" />
+    <PackageReference Include="MySqlConnector" Version="2.2.7" />
     <PackageReference Include="NLog" Version="5.1.3" />
     <PackageReference Include="NLog.Database" Version="5.1.2" />
     <PackageReference Include="NLog.Web.AspNetCore" Version="5.2.2" />

+ 7 - 5
MicroServices/Business/Bussiness.MongoDB/BussinessMongoDbModule.cs

@@ -1,10 +1,11 @@
 using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.DependencyInjection.Extensions;
 using Volo.Abp.Auditing;
 using Volo.Abp.AuditLogging.MongoDB;
 using Volo.Abp.Modularity;
+using Volo.Abp.MongoDB;
 using Volo.Abp.PermissionManagement.MongoDB;
 using Volo.Abp.TenantManagement.MongoDB;
-using Volo.Abp.Uow;
 
 namespace Bussiness.MongoDB
 {
@@ -21,10 +22,11 @@ namespace Bussiness.MongoDB
                 options.AddDefaultRepositories(includeAllEntities: true);
             });
 
-            Configure<AbpUnitOfWorkDefaultOptions>(options =>
-            {
-                options.TransactionBehavior = UnitOfWorkTransactionBehavior.Auto;
-            });
+            // 替换默认的MongoDB上下文提供程序,禁用事务支持
+            // 解决Standalone MongoDB服务器不支持事务的问题
+            context.Services.Replace(
+                ServiceDescriptor.Transient<IMongoDbContextProvider<BussinessMongoDbContext>, 
+                    NonTransactionalMongoDbContextProvider<BussinessMongoDbContext>>());
 
             Configure<AbpAuditingOptions>(options =>
             {

+ 124 - 0
MicroServices/Business/Bussiness.MongoDB/NonTransactionalMongoDbContextProvider.cs

@@ -0,0 +1,124 @@
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using MongoDB.Driver;
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using Volo.Abp;
+using Volo.Abp.Data;
+using Volo.Abp.MongoDB;
+using Volo.Abp.MultiTenancy;
+using Volo.Abp.Threading;
+using Volo.Abp.Uow;
+
+namespace Bussiness.MongoDB
+{
+    /// <summary>
+    /// 自定义MongoDB上下文提供程序,禁用事务支持
+    /// 用于解决Standalone MongoDB服务器不支持事务的问题
+    /// </summary>
+    public class NonTransactionalMongoDbContextProvider<TMongoDbContext> : IMongoDbContextProvider<TMongoDbContext>
+        where TMongoDbContext : class, IAbpMongoDbContext
+    {
+        private readonly IUnitOfWorkManager _unitOfWorkManager;
+        private readonly IConnectionStringResolver _connectionStringResolver;
+        private readonly ICancellationTokenProvider _cancellationTokenProvider;
+        private readonly ICurrentTenant _currentTenant;
+        private readonly IServiceProvider _serviceProvider;
+        private readonly ILogger<NonTransactionalMongoDbContextProvider<TMongoDbContext>> _logger;
+
+        public NonTransactionalMongoDbContextProvider(
+            IUnitOfWorkManager unitOfWorkManager,
+            IConnectionStringResolver connectionStringResolver,
+            ICancellationTokenProvider cancellationTokenProvider,
+            ICurrentTenant currentTenant,
+            IServiceProvider serviceProvider,
+            ILogger<NonTransactionalMongoDbContextProvider<TMongoDbContext>> logger)
+        {
+            _unitOfWorkManager = unitOfWorkManager;
+            _connectionStringResolver = connectionStringResolver;
+            _cancellationTokenProvider = cancellationTokenProvider;
+            _currentTenant = currentTenant;
+            _serviceProvider = serviceProvider;
+            _logger = logger;
+        }
+
+        public async Task<TMongoDbContext> GetDbContextAsync(CancellationToken cancellationToken = default)
+        {
+            var unitOfWork = _unitOfWorkManager.Current;
+            if (unitOfWork == null)
+            {
+                throw new AbpException("A DbContext can only be created inside a unit of work!");
+            }
+
+            var targetTenantId = _currentTenant.Id;
+            var connectionString = await ResolveConnectionStringAsync(targetTenantId);
+            var dbContextKey = $"{typeof(TMongoDbContext).FullName}_{connectionString}";
+
+            var databaseApi = unitOfWork.FindDatabaseApi(dbContextKey);
+            if (databaseApi == null)
+            {
+                // 创建不带事务的数据库API
+                databaseApi = new MongoDbDatabaseApi(await CreateDbContextAsync(unitOfWork, connectionString, cancellationToken));
+                unitOfWork.AddDatabaseApi(dbContextKey, databaseApi);
+            }
+
+            return ((MongoDbDatabaseApi)databaseApi).DbContext.As<TMongoDbContext>();
+        }
+
+        [Obsolete("Use GetDbContextAsync method.")]
+        public TMongoDbContext GetDbContext()
+        {
+            return AsyncHelper.RunSync(() => GetDbContextAsync());
+        }
+
+        private Task<IAbpMongoDbContext> CreateDbContextAsync(IUnitOfWork unitOfWork, string connectionString, CancellationToken cancellationToken)
+        {
+            var dbContext = unitOfWork.ServiceProvider.GetRequiredService<TMongoDbContext>();
+
+            var mongoUrl = new MongoUrl(connectionString);
+            var databaseName = mongoUrl.DatabaseName;
+            if (databaseName.IsNullOrWhiteSpace())
+            {
+                databaseName = ConnectionStringNameAttribute.GetConnStringName<TMongoDbContext>();
+            }
+
+            // 创建MongoDB客户端(不使用事务)
+            var client = new MongoClient(mongoUrl);
+            var database = client.GetDatabase(databaseName);
+
+            // 初始化DbContext,不传入session(即不使用事务)
+            dbContext.ToAbpMongoDbContext().InitializeDatabase(database, client, null);
+
+            _logger.LogDebug("MongoDB context created without transaction support for standalone server.");
+
+            return Task.FromResult<IAbpMongoDbContext>(dbContext);
+        }
+
+        private async Task<string> ResolveConnectionStringAsync(Guid? tenantId)
+        {
+            if (tenantId == _currentTenant.Id)
+            {
+                return await _connectionStringResolver.ResolveAsync(ConnectionStringNameAttribute.GetConnStringName<TMongoDbContext>());
+            }
+
+            using (_currentTenant.Change(tenantId))
+            {
+                return await _connectionStringResolver.ResolveAsync(ConnectionStringNameAttribute.GetConnStringName<TMongoDbContext>());
+            }
+        }
+    }
+
+    /// <summary>
+    /// MongoDB数据库API包装类
+    /// </summary>
+    public class MongoDbDatabaseApi : IDatabaseApi
+    {
+        public IAbpMongoDbContext DbContext { get; }
+
+        public MongoDbDatabaseApi(IAbpMongoDbContext dbContext)
+        {
+            DbContext = dbContext;
+        }
+    }
+}

+ 18 - 0
MicroServices/Business/QuartzSettings/logs/logs.txt

@@ -4726,3 +4726,21 @@
 {"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-12-29T10:32:51.5559965+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-12-29T10:32:51.5600099+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-12-29T10:32:51.5618045+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-12-29T11:23:27.6795889+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-12-29T11:23:27.728089+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-12-29T11:23:27.7325535+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-12-29T11:23:27.7345308+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-12-29T11:23:27.7395586+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-12-29T11:23:27.7419019+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-12-30T10:31:49.9025804+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-12-30T10:31:49.9528943+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-12-30T10:31:49.9560502+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-12-30T10:31:49.9579164+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-12-30T10:31:49.9628945+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-12-30T10:31:49.965003+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-12-30T10:57:10.9200071+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-12-30T10:57:10.9596544+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-12-30T10:57:10.9631366+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-12-30T10:57:10.9651357+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-12-30T10:57:10.9697716+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-12-30T10:57:10.9717299+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}