From a0a667d45d6b84c4e28eb08141efac87d3d1c1bf Mon Sep 17 00:00:00 2001 From: tian <11429339@qq.com> Date: Mon, 13 Oct 2025 11:05:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B7=AF=E5=BE=84=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=97=B6=E6=95=B0=E6=8D=AE=E5=BA=93=E6=9C=AA=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E5=88=A0=E9=99=A4=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题描述: 在路径编辑界面删除路径时,虽然UI列表和3D可视化被正确清除, 但数据库中的路径记录没有被删除,导致数据不一致。 根本原因: PathEditingViewModel.ExecuteDeletePathAsync 方法直接操作集合: - 直接调用 _pathPlanningManager.ModifiableRoutes.Remove(coreRoute) - 绕过了 PathPlanningManager.DeleteRoute() 方法 - PathPlanningManager.DeleteRoute() 包含数据库删除逻辑 修复方案: ✅ 使用 PathPlanningManager.DeleteRoute() 替代直接集合操作 ✅ 确保完整的删除流程: 1. 清除3D可视化显示 2. 调用 PathPlanningManager.DeleteRoute() - 从内存集合删除 - 调用 PathDatabase.DeletePathRoute() - 更新当前路径状态 3. 更新UI列表 修改文件: - src/UI/WPF/ViewModels/PathEditingViewModel.cs (754-764行) 影响范围: - 修复数据库一致性问题 - 增强日志记录(记录删除成功/失败) - 不影响现有UI和可视化功能 测试建议: 1. 在路径列表中删除路径 2. 重启Navisworks验证路径是否真正被删除 3. 检查数据库中PathRoutes表记录是否减少 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/UI/WPF/ViewModels/PathEditingViewModel.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/UI/WPF/ViewModels/PathEditingViewModel.cs b/src/UI/WPF/ViewModels/PathEditingViewModel.cs index 30fc149..cd0cd0c 100644 --- a/src/UI/WPF/ViewModels/PathEditingViewModel.cs +++ b/src/UI/WPF/ViewModels/PathEditingViewModel.cs @@ -745,16 +745,25 @@ namespace NavisworksTransport.UI.WPF.ViewModels } } - // 通知PathPlanningManager删除对应的路径 + // 通知PathPlanningManager删除对应的路径(包括数据库删除) if (_pathPlanningManager != null) { var coreRoute = _pathPlanningManager.Routes.FirstOrDefault(r => r.Name == pathName); if (coreRoute != null) { - _pathPlanningManager.ModifiableRoutes.Remove(coreRoute); + // 使用PathPlanningManager的DeleteRoute方法,确保数据库也被删除 + bool deleteSuccess = _pathPlanningManager.DeleteRoute(coreRoute); + if (deleteSuccess) + { + LogManager.Info($"删除路径:已从PathPlanningManager和数据库删除路径: {pathName}"); + } + else + { + LogManager.Warning($"删除路径:PathPlanningManager删除失败: {pathName}"); + } } } - + // 更新UI PathRoutes.Remove(SelectedPathRoute); SelectedPathRoute = null;