修复路径删除时数据库未同步删除的bug

问题描述:
在路径编辑界面删除路径时,虽然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 <noreply@anthropic.com>
This commit is contained in:
tian 2025-10-13 11:05:18 +08:00
parent e9e0d8c83f
commit a0a667d45d

View File

@ -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;