用EF Core的人,99%都踩过这个坑:代码看着没问题,数据库却莫名其妙被改了。Arthur Vickers在微软干了14年,专门收拾这类烂摊子。他说这东西就像自动驾驶——平时省心,出事了才发现方向盘根本不在你手里。
第一个坑叫"幽灵更新"。你只想改用户的邮箱,结果EF Core把整条记录全刷了一遍。数据库日志里全是UPDATE,字段一个没落下。Vickers的原话是:「Change Tracker不会读心,它只认内存里的状态。」换句话说,你加载了10个字段,它就准备更新10个字段,哪怕你只动了一个。
第二个更隐蔽。后台任务跑久了越来越慢,内存像漏气的气球。很多人以为是SQL问题,其实是DbContext没扔,Change Tracker里攒了几百万个对象在"盯梢"。Vickers管这叫"跟踪风暴"——每个实体都在内存里占着坑,等着被你修改。
第三个坑在软删除。你以为删了,其实数据库里还好好的,只是打了个标记。但导航属性呢?级联呢?EF Core 8之前连全局拦截器都没有,每家都在重复造轮子。Vickers的示例代码里,有人把删除标记做成了查询过滤器,结果连审计日志都查不到自己删过啥。
他最后补了一句:很多人学EF Core只学到SaveChanges,就像学开车只学到踩油门。刹车在哪,得自己找。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.