You need to enable JavaScript to run this app. MVVM项目Terrain对象插入无报错但未存入数据库是什么原因
优惠活动
大模型
产品
解决方案
定价
更多

MVVM项目Terrain对象插入无报错但未存入数据库是什么原因

问题解决方案

核心问题修复

你的数据库写入逻辑缺失了EF Core的变更提交步骤,EF上下文调用Add方法仅会将实体加入内存的变更追踪队列,必须调用SaveChanges()才会将变更真正写入数据库,修正后的TerrainDBManager代码如下:

try
{
    using (ProjectOrienteeringDBContext dBContext = new ProjectOrienteeringDBContext() )
    {
        dBContext.Terrains.Add(item);
        // 新增此行提交变更到数据库
        dBContext.SaveChanges();
    }
}
catch (Exception ex)
{
    // 替换throw ex为throw,保留原始异常调用栈方便排查
    throw;
}

其余已知问题修复

  1. 难度赋值逻辑错误
    你当前选中高难度选项时,赋值的是中等难度枚举值,修正对应代码:
if (hard)
{
    terrain.Diffculty = Difficulty.Hard;
}
  1. 输入校验缺失
    解析控制点数量时增加合法性校验,避免无效数据入库:
int countOfPoints = 0;
if(!int.TryParse(txtControlPoits.Text, out countOfPoints) || countOfPoints <= 0)
{
    // 可替换为你项目对应的提示交互逻辑
    MessageBox.Show("请输入有效的正整数控制点数量");
    return;
}
terrain.ControlPoints = countOfPoints;
  1. 异常抛出逻辑优化
    其余所有catch块中的throw ex都替换为throw,避免丢失原始异常的栈信息。

如果完成以上修改后仍无法写入数据,可检查Terrain实体的主键配置,确认主键是否为数据库自增、是否存在手动赋值重复主键的问题。

内容的提问来源于stack exchange,提问作者Yordan Mandevski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 22:18:03