FreeSql 项目中对 PostgreSQL 的 DateOnly 和 TimeOnly 类型支持解析
在 .NET 生态系统中,FreeSql 是一个功能强大的 ORM 框架,近期有用户提出了对 PostgreSQL 数据库中 DateOnly 和 TimeOnly 类型支持的需求。本文将深入分析这一特性的实现过程和技术细节。
背景介绍
随着 .NET 6 的发布,引入了 DateOnly 和 TimeOnly 这两个新的日期时间类型,它们分别用于表示纯日期和纯时间值。然而,在 FreeSql 的早期版本中,这两个类型仅支持 MSSQL Server 数据库,对于 PostgreSQL 的支持存在缺失。
技术挑战
实现 PostgreSQL 对 DateOnly 和 TimeOnly 的支持面临几个主要技术难点:
-
Npgsql 版本兼容性问题:Npgsql 作为 PostgreSQL 的 .NET 数据提供程序,其不同版本间的类型处理机制存在较大差异。高版本改动较大,升级会导致类型加载失败;而低版本则无法正确处理 TimeOnly 类型的写入。
-
类型转换异常:在查询阶段会出现类型转换错误,系统尝试将 TimeSpan 类型转换为 TimeOnly 类型时抛出异常,提示"Object must implement IConvertible"。
-
ADO.NET 使用习惯变更:Npgsql 的新版本改变了传统的 ADO.NET 使用模式,这使得兼容性处理变得更加复杂。
解决方案
FreeSql 团队在 v3.5.100-preview20240821 版本中成功解决了这些问题。解决方案主要包括:
-
类型处理适配:针对不同版本的 Npgsql 实现了适配层,确保在各种环境下都能正确处理 DateOnly 和 TimeOnly 类型。
-
查询结果转换优化:改进了查询结果集的类型转换逻辑,确保从数据库读取的数据能够正确映射到 .NET 的 DateOnly 和 TimeOnly 类型。
-
写入处理增强:完善了数据写入时的类型处理,解决了早期版本中 TimeOnly 类型写入失败的问题。
使用建议
对于需要使用这些新类型的开发者,建议:
- 确保使用 FreeSql v3.5.100-preview20240821 或更高版本。
- 检查项目中 Npgsql 的版本兼容性。
- 对于现有项目升级,建议先在测试环境验证类型转换的正确性。
总结
FreeSql 对 PostgreSQL 的 DateOnly 和 TimeOnly 类型的支持完善了其多数据库兼容性,为开发者处理纯日期和纯时间场景提供了更好的支持。这一改进体现了 FreeSql 项目对 .NET 新特性的快速响应能力,也展示了其在处理不同数据库差异方面的技术实力。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00