微软发布了 OData .NET(ODL)9.0.0 预览版 3(这是 OData .NET 客户端和核心库的最新预览版本),延续了该库的现代化进程。这个预览版聚焦于更安全的默认行为、运行时 API 清理以及 OData 规范遵从性提升。OData .NET 团队正朝着 9.x 的稳定版本努力推进。
OData .NET 核心库(如 Microsoft.OData.Core)当前的稳定版本仍然是 NuGet 上的8.4.x系列版本,其中,8.4.3 是该系列的最新稳定版本。该稳定分支支持 OData v4/v4.01,并且广泛应用于生产环境,而9.x版本仍在预览当中。
预览版 3 延续了 9.x 早期预览版的约定,但根据开发者的反馈以及 OData 规范进行了以下几个方面的增强:
动作查询执行现在使用 SingleOrDefault()语义处理可空引用,在保留对非空值的严格检查的同时,减少了由常见的空响应所引发的意料之外的异常。
移除了与 ISerializable 相关的旧序列化构造函数,消除了现代 SDK 上的构建警告。
放弃了旧的 CsdlTarget 概念,并弃用了过时的返回类型访问器,转而支持更新的 EDM 接口。
与 IEdmOperation 接口返回类型属性(ReturnType)相关的过时 API 也已被新的 IEdmOperationReturn 抽象完全替换。
这些变化反映了这样一种发展方向:与.NET 8/9/10 运行时保持兼容、内存占用更低的分配模式(如添加 ReadOnlySpan
预览版 3 的一个关键行为变化是强制对非类型化值进行结构化类型反序列化(不再有 ReadUntypedAsString 切换),使运行时行为更接近官方的OData JSON格式。此外,未指定类型的数值现在默认推断为特定的 CLR 数值类型,并提供兼容性标志以支持旧版结果(即解析为 decimal 的数值)。
从稳定的 8.x 系列版本升级到 9.x 预览版的 NuGet 包应被视为破坏性变更:开发者需要检查可空返回值处理、预期的非类型化 JSON shapes 以及对已移除的旧 API 的依赖。由于 9.x 版本仍处于预览阶段,不建议在没有仔细测试的情况下用于生产环境。
OData 生态系统继续向前发展。举例来说,ASP.NET Core OData 包独自进入了自己的 9.x+系列(包括像Microsoft.AspNetCore.OData 9.4.x这样的稳定版本),这表明服务端和客户端 OData 技术栈的相关工作正在并行推进。
有兴趣提供反馈或跟踪稳定化计划的开发者,可以关注OData/odata.net GitHub存储库和OData官方博客,获取预览公告、迁移指南和 9.0 最终稳定版的路线图动态。
原文链接:





