EF Core 并发冲突处理实战:乐观锁、RowVersion 与 DbUpdateConcurrencyException

并发冲突是 EF Core 里最容易被忽视、出了事又最难排查的问题之一。这篇文章聊聊它的机制、怎么配置乐观锁、冲突异常怎么处理,以及几个工程上容易踩的坑。 问题背景 真实场景:电商平台秒杀活动,同一件商品被多个请求并发扣减库存。业务日志里一切正常,但库存对不上——扣了 100 件,实际库存只减少了 60 件。 排查后发现: 多个请求几乎同时读取了库存为 200 …

EF Core 慢查询排查实战:TagWith、OpenTelemetry 与执行计划

EF Core 性能问题里,最折磨人的不是“慢”,而是“慢得没规律”,线上卡,测试又无法复现。 很多小D、小W同学都经历过这种现场: 压测数据很好看 数据库 CPU 没打满 业务代码看起来也没什么大问题 你改了几个 Include,可能短期有效,但过两周又抖回来。根因往往不是某一行 LINQ 写错,而是整条排查链路没打通。 这篇文章就做一件事:给你一套能线上落地的 EF Core 慢查询定位闭环, …

EF Core 拦截器实战:SaveChangesInterceptor、CommandInterceptor 与审计落地

审计不是“给表补几个 CreatedBy 字段”,也不是“在业务方法里顺手记日志”。它本质上是系统级可追溯能力,设计目标是让系统在任何写路径下都能稳定回答四个问题:谁发起、改了什么、何时发生、通过哪条链路触发。 真正的难点不在 API 用法,而在系统设计阶段是否把审计定义成基础设施能力。这里聚焦两层落地:SaveChangesInterceptor 负责实体变更审 …

EF Core 查询性能实战:Include、投影与跟踪策略边界

很多团队把 EF Core 的性能问题归因于“ORM 天生慢”,但线上真实情况通常是: 查询写法对 SQL 形态不敏感 默认跟踪被滥用 图省事一次 Include 到底 结果是接口能跑,但高峰时段 P95 持续抬高,数据库 CPU 和网络带宽一起被拖上去。 这篇文章聚焦一个目标:把 EF Core 查询从“能查到数据”升级到“可预测、可解释、可优化”。 1. 问题背景:列表页为什么越改越慢 一个典 …

Microsoft Agent Framework + Kimi API 实战:控制台应用跑通单次与多轮 Agent 对话

引言 如果你的技术栈主要是 .NET,想要快速上手 Agent 开发,那么 Microsoft Agent Framework 是一个非常不错的选择。它提供了对话管理、上下文保持、工具调用等一系列功能,让你能专注于业务逻辑实现。 这篇文章用一个最小控制台应用,通过 maf + kimi ai 合作,完成下面的目标: 使用 Microsoft Agent Framework(NuGet …

Redis:延迟双删的适用边界与落地细节

延迟双删不是新概念,但线上一出缓存脏读,我曾经在项目中把它当成标准答案直接套进去。结果通常是代码写了两次删除,问题却没真正收住。 这篇就聚焦一个知识点:延迟双删到底解决什么问题,为什么它只能改善最终一致概率,以及在 .NET 服务里怎么把第二次删除做得更稳一点。 1. 问题背景:数据库已经更新,为什么缓存里还是旧值 聊一个高频场景:商品详情页读 Redis,后台商品编辑写数据库。读流量远大于写流 …

Serilog + OpenTelemetry:从请求日志到链路追踪的关联落地

这篇直接给落地方案,不再讲结构化日志的背景概念。目标只有一个:在 ASP.NET Core 服务里,把 Serilog 日志和 OpenTelemetry 链路追踪打通,排障时可以从一条错误日志直接跳到完整 Trace。 1. 问题背景:这篇要交付什么 按下面步骤做完,你会得到一条可执行排障链路: 日志里稳定带上 TraceId、SpanId、RequestPath、RequestMethod 业 …

Serilog:从结构化日志认知到 .NET 工程落地

问题背景 很多项目不缺日志,缺的是有用的日志。 平时接口跑得顺,大家都觉得日志够用。真到线上出问题,日志的短板会一下子暴露出来。 比如订单接口偶发超时,日志里只剩这么一句: Create order failed for customer 1024, cost 3800ms, trace abc123 这种日志平时看着还行,真到线上排障时基本帮不上太多忙: …

从 IApplicationBuilder 到 RequestDelegate:ASP.NET Core 请求管线性能与可观测性

很多团队做性能优化时,第一反应是改 SQL、加缓存、扩机器。结果接口还是慢,而且慢得不稳定。 这类问题里,有一部分根因并不在业务代码,而在请求进入业务之前就已经产生了: 中间件顺序、重复序列化、过重日志、异常处理位置不当,都会把每个请求的固定成本悄悄抬高。 这篇文章我们不讲抽象概念,直接从一个真实工程场景出发,拆开 ASP.NET Core 请求管线,回答三个问题: 请求管线到底是怎么执行的 哪些 …

从其他语言到 Pythonic 思维的完整迁移手册

想学学python搞ai应用开发,但是好多教程都是从“hello world" 开始,太痛苦了。因此,整理了这份文档。面向有编程基础的开发者,快速掌握 Python 开发全貌 一、环境管理 Python 版本管理 macOS / Linux(pyenv) curl https://pyenv.run | bash pyenv install 3.12.0 # 安装指定版本 pyenv …