阿Y博客

上辈子作恶多端,这辈子Chsarp后端
文章发布热力图
一 三 五
少
多
C# 表达式树深度解析:自建 ORM 如何把 LINQ 翻译成 SQL

C# 表达式树深度解析:自建 ORM 如何把 LINQ 翻译成 SQL

很多人每天写 LINQ,却不知道它背后是一棵可以被拆解翻译的表达式树。Entity Framework 能把 Where(x => x.Name == "张三") 转成 SQL,靠的就是表达式树解析。本文基于生产项目中的 ExpressionParser,从零实现了一个表达式树解析器,能把 LINQ 的 Where 条件和 OrderBy 排序翻译成数据库查询条件,配合反射构建的元数据缓存,构成了一个自实现 ORM 的核心查询层。
.NET 7 0 0
C# ADO.NET 数据库连接管理器实战:加密连接字符串、并发初始化与重试就绪检测

C# ADO.NET 数据库连接管理器实战:加密连接字符串、并发初始化与重试就绪检测

在 SwitchData 项目中,数据库连接字符串不仅需要集中管理,还要兼顾安全性与启动可靠性。本文拆解 DbConnectionManager 的实现,讲解如何用 ConcurrentDictionary 做线程安全缓存、Interlocked.Exchange 实现单次初始化、双模式回退兼容 WinForms,以及 WaitForReadyAsync 带 CancellationToken 的重试就绪检测。
数据库 6 0 0
手写 LINQ 表达式树解析器:将 Lambda 条件翻译为数据库查询

手写 LINQ 表达式树解析器:将 Lambda 条件翻译为数据库查询

从 SwitchData 项目的 ExpressionParser 出发,手把手拆解如何把 LINQ 表达式树拆解成结构化查询条件。详解 ExpressionVisitor 遍历、闭包常量提取、运算符反转、括号分组还原,以及 MetadataCache 元数据缓存和 PredicateBuilder 动态表达式组合,读完就能手写一个轻量 LINQ Provider。
.NET 7 0 0