From 9dad4cb8d0c12f0a85bff04b824c5c229dd13dab Mon Sep 17 00:00:00 2001 From: ruisu Date: Fri, 17 Jul 2026 10:28:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E9=A3=8E=E6=8E=A7=E5=BC=95=E6=93=8E?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE=E5=BA=93=E5=AF=B9=E8=B1=A1=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E9=87=87=E7=94=A8=E5=85=A8=E5=B1=80=EF=BC=8C=E9=98=B2?= =?UTF-8?q?=E6=AD=A2=E8=BF=BD=E8=B8=AA=E6=89=80=E6=9C=89=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=87=BA=E7=9A=84=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Modules/RiskEngine/RiskEngineService.cs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/YLErpDAL/Modules/RiskEngine/RiskEngineService.cs b/YLErpDAL/Modules/RiskEngine/RiskEngineService.cs index aca95a5b..36e9222c 100644 --- a/YLErpDAL/Modules/RiskEngine/RiskEngineService.cs +++ b/YLErpDAL/Modules/RiskEngine/RiskEngineService.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using Newtonsoft.Json; using Qdp.Foundation.Utilities; using System.Reflection; using YLErp.BLL; @@ -309,11 +309,14 @@ namespace YLErp.Modules.RiskEngine try { - _logger.Info($"[风控引擎] EvaluateRisk 开始 - TradeId: {context?.TradeId}, TriggerPoint: {triggerPoint}"); - if (context != null && context.DbContext == null) - { - context.DbContext = DbContext; - } + using var ruleDbContext = DbContextFactory.GetYLDbContext(); + ruleDbContext.ChangeTracker.QueryTrackingBehavior = Microsoft.EntityFrameworkCore.QueryTrackingBehavior.NoTracking; + + context ??= new RiskContext(); + context.TriggerPoint = triggerPoint; + context.DbContext = ruleDbContext; + + _logger.Info($"[风控引擎] EvaluateRisk 开始 - TradeId: {context.TradeId}, TriggerPoint: {triggerPoint}"); // ============================================================ // Step 1: 从内存缓存读取规则定义和规则应用(启动时已预热) @@ -343,8 +346,8 @@ namespace YLErp.Modules.RiskEngine // 2. 同一维度内多选按并集处理; // 3. 不同维度之间按交集处理; // 4. 某维度留空表示该维度不限制。 - var trade = context != null && context.TradeId > 0 - ? DbContext.trade.FirstOrDefault(t => t.id == context.TradeId) + var trade = context.TradeId > 0 + ? context.DbContext.trade.AsNoTracking().FirstOrDefault(t => t.id == context.TradeId) : null; var matchedApplications = triggerMatchedApps