Ef-Core
4 min read
“事务加上了,这可不就问了嘛”。真正到线上一跑,问题就冒出来了:
数据库提交成功了,但消息没发出去 外部调用成功了,但本地事务回滚了 SQL 重试机制打开后,一段代码被重复执行了两次 同一个请求里明明都写在一起,最终状态还是不一致 这篇文章不讲抽象理论,直接回答一个工程问题:在 EF Core 里,事务边界到底该怎么画,哪些事情能靠数据库事务兜住,哪些事情必须换一种设计。
问题背景:为什么“写成功 …
2 min read
这篇文章讨论一个问题:一次写入请求从实体变更到数据库落盘,中间到底发生了什么,哪里最容易慢,以及应该怎么定位。
问题背景 真实场景:订单系统在白天吞吐稳定,凌晨高峰出现周期性尖峰。接口平均耗时变化不大,但 P95 从 80ms 抬到 420ms,数据库 CPU 也出现波峰。
排查后发现:
应用层每次批量处理 2000 条数据 循环中频繁触发变更检测 每条数据都单独 SaveChanges 最终生成 …
2 min read
做 EF Core 一段时间后,很多人都会遇到同一个节点:常规 LINQ 能覆盖大多数查询,但一到复杂报表、视图或者历史 SQL 复用场景,就会开始考虑原生 SQL。问题不在于“能不能写 SQL”,而在于怎么写得可维护、可观测、还能和 EF Core 的映射体系配合好。这篇文章讲解 FromSql、SqlQuery 的使用边界和对象映射的一些坑。
1. 问题背景:为什么原生 SQL 常常能跑但难以 …
2 min read
并发冲突是 EF Core 里最容易被忽视、出了事又最难排查的问题之一。这篇文章聊聊它的机制、怎么配置乐观锁、冲突异常怎么处理,以及几个工程上容易踩的坑。
问题背景 真实场景:电商平台秒杀活动,同一件商品被多个请求并发扣减库存。业务日志里一切正常,但库存对不上——扣了 100 件,实际库存只减少了 60 件。
排查后发现:
多个请求几乎同时读取了库存为 200 …
2 min read
EF Core 性能问题里,最折磨人的不是“慢”,而是“慢得没规律”,线上卡,测试又无法复现。
很多小D、小W同学都经历过这种现场:
压测数据很好看 数据库 CPU 没打满 业务代码看起来也没什么大问题 你改了几个 Include,可能短期有效,但过两周又抖回来。根因往往不是某一行 LINQ 写错,而是整条排查链路没打通。
这篇文章就做一件事:给你一套能线上落地的 EF Core 慢查询定位闭环, …
3 min read
审计不是“给表补几个 CreatedBy 字段”,也不是“在业务方法里顺手记日志”。它本质上是系统级可追溯能力,设计目标是让系统在任何写路径下都能稳定回答四个问题:谁发起、改了什么、何时发生、通过哪条链路触发。
真正的难点不在 API 用法,而在系统设计阶段是否把审计定义成基础设施能力。这里聚焦两层落地:SaveChangesInterceptor 负责实体变更审 …
2 min read
很多团队把 EF Core 的性能问题归因于“ORM 天生慢”,但线上真实情况通常是:
查询写法对 SQL 形态不敏感 默认跟踪被滥用 图省事一次 Include 到底 结果是接口能跑,但高峰时段 P95 持续抬高,数据库 CPU 和网络带宽一起被拖上去。
这篇文章聚焦一个目标:把 EF Core 查询从“能查到数据”升级到“可预测、可解释、可优化”。
1. 问题背景:列表页为什么越改越慢 一个典 …
5 min read
引言 欢迎阅读,这篇文章主要面向初级开发者。
在开始之前,先问你一个问题:你做的系统,是不是每次增加一个查询条件或者排序字段,都要去请求参数对象里加一个属性,然后再跑去改 EF Core 的查询逻辑?
如果是,那这篇文章应该对你有用。我会带你做一个统一的、扩展起来不那么麻烦的分页查询方案。整体思路是四件事:统一入参、统一出参、动态排序、动态过滤。 …
2 min read
在一个项目中,方便为多个客户提供服务,我们需要实现多租户系统。多租户系统,就是多个客户共享一个运行的项目实例,同时确保每个客户的数据安全隔离(你看不见我,我看不见你)。
这篇文章,我们将落地在 ASP.NET Core 和 Entity Framework Core 中,基于 TenantId 的全局过滤机制,实现多租户数据隔离。
原理解析 先确定隔离模型 多租户常见有三种模型:
每个租户一套数据 …