微软发布了OData .NET (ODL) 9.0.0预览版3。这是OData .NET客户端库及核心库的最新预览版本,进一步体现了这些库的现代化改造进程。此次预览版主要优化了默认行为的安全性、运行时API的设计,并使这些库更符合OData规范的要求;开发团队正在为最终发布稳定的9.x版本而努力。
需要说明的是,目前OData .NET核心库的稳定版本仍然是8.4.x系列,在NuGet平台上,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<char>类型的查找重载功能),以及更加依赖平台内置API的倾向。
预览版3中的一个重要变化是:对于未指定类型的数值,系统会强制进行结构化反序列化处理,不再提供ReadUntypedAsString这样的选项。这一改动使得运行时行为更符合官方OData JSON格式的要求。此外,未指定类型的数值现在默认会被推断为特定的CLR数值类型,不过对于那些需要保持旧有格式的结果,仍然提供了兼容性设置。
从稳定的8.x系列版本升级到9.x预览版NuGet包时,开发者需要注意以下方面:需要重新检查代码中对可为空返回值的处理方式、预期的未指定类型JSON数据结构,以及是否还在使用已被淘汰的旧API。由于9.x系列版本仍处于预览阶段,因此在没有进行充分测试的情况下,不建议将其用于生产环境。
整个OData生态系统仍在不断发展中。例如,ASP.NET Core相关的OData包已经独立发展成了自己的9.x+系列(其中也包括像Microsoft.AspNetCore.OData 9.4.x这样的稳定版本),这表明服务端和客户端侧的OData技术都在同步进步。
那些有兴趣提供反馈或关注稳定性改进计划的开发者,可以关注OData/odata.net GitHub仓库以及官方OData博客,以便及时获取预览版本的发布通知、迁移指南,以及关于最终稳定版本9.0发布的相关进展信息。
/filters:no_upscale()/news/2026/01/dotnet-10-available-for-aws/en/resources/1computeblog-2512-image-1-1769536803951.png)