-
我以为 LINQ 查询在定义那一行就执行完了,结果它每次遍历都重新查一遍数据库,还因为延迟执行读到了中途变化后的数据的深度复盘
我写 var query = db.Users.Where(...),以为这行就把结果查回来存进 query 了。可程序处处诡异:同一个 query 被用了好几次(Count、foreach、Any),数据库日志里同一查询竟执行了好几遍;更怪的是先 Count 是 100,中间插了几条数据,再 foreach 遍历竟是 103,同一 query 两次结果对不上。深究才懂 LINQ 是延迟执行:定义…- 0
- 0
-
一次查询被执行五六遍:LINQ 延迟执行避坑复盘
这个性能 bug 藏得极深,深到我盯着代码反复看了好几遍都觉得这逻辑没毛病啊:一个 C# 写的报表接口慢得离谱,要好几秒才返回。我上 profiler 一抓愣住了——一个本该只执行一次的数据库查询竟然被执行了五六次之多,可我代码里明明只查了一次啊,我把查询结果赋给了一个变量,后面只是对这个变量做了点判断遍历统计,怎么会反反复复查库?排查到最后真相指向 C#/LINQ 里一个极其经典却极其隐蔽的特性…- 0
- 0
IQueryable
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!


