【开源】跨语言·跨平台·跨数据库(4) ——用宝框架 ORM 数据源适配器
【开源】跨语言·跨平台·跨数据库(4) ——用宝框架 ORM 数据源适配器2026-07-13作者周方勇 / 咏方舟-长江支流金质打印通、用宝框架开源作者用宝框架 ·拥抱第一 · 一次书写 · 三端复用用宝框架是轻量级企业级分层架构基架也是开放的、可扩展的架构体系。.NET Standard 2.0零依赖支持 MySQL / SQL Server / Oracle / SQLite并可扩展。SQL就是最好的跨平台语言可跨语言无缝迁移至鸿蒙 ArkTS 及 Java 技术栈接口名、类名、方法签名三端完全一致。用宝架构开发的所有应用可直接移植到 Java/ArkTS无需重新设计架构、无需重新分层、无需重新抽象业务逻辑只需按目标语言语法做形式上的转换。本文侧重为用宝框架增加轻量级 ORM在不改变核心基架的前提下获得实体映射 自动 SQL 生成能力增删改查完全不用写代码。其中数据源隔离部分采用适配器模式通过 IEntityDataSource 跨语言接口隔离具体语言的数据源。本篇将20年前无泛型、无依赖注入、无EF时的轻量级设计重新整理形成完整的设计文档与约束规范让AI按照规范自动执行生成代码。当然为了代码生成少些bug我提供了之前源码特别是CommandTextBuilder。人工不仅是设计师更是有与AI沟通的能力以及程序员协助调试Bug的能力AI作为执行者将更大幅提升效率。用宝框架 ORM 数据源适配器设计上篇做了很详细的设计 【开源】跨语言·跨平台·跨数据库(3) —— 为用宝框架增加ORM让AI执行 现在已调的有效果了。经过 AI 协作和一晚的熬夜用宝框架 ORM 扩展已基本完工。需要源码的留言并关注调试过程中仅粉丝全部源码。一、项目目录结构UserBaoTech.Foundation/ ├── UserBaoTech.Foundation/ 核心基架 │ └── ... ├── UserBaoTech.Foundation.UbException/ 异常体系 │ ├── IUserBaoException.cs │ └── UserBaoException.cs ├── UserBaoTech.Foundation.ORM/ ORM扩展新建 │ ├── IEntityDataSource.cs 跨语言数据源接口 │ ├── EntityDataReaderAdapter.cs .NET 适配器将 IDataReader 适配为 IEntityDataSource │ ├── IMapEntity.cs │ ├── IMapEntityAccess.cs │ ├── MapEntityAccessBase.cs │ ├── AttributeMapEntity.cs │ └── ManualMapEntity.cs └── UserBaoTech.Foundation.ORM.Demo.WebAPI/ 演示项目 ├── Entities/ │ ├── Product.cs 特性方式实体 │ └── ProductByHand.cs 手写方式实体 ├── Access/ │ └── ProductAccess.cs ├── Services/ │ └── ProductService.cs ├── Controllers/ │ └── ProductController.cs ├── Program.cs └── appsettings.json二、核心接口IEntityDataSource跨语言抽象namespaceUserBaoTech.Foundation.ORM{/// summary/// 跨语言数据源接口。/// 业务层只依赖此接口不依赖任何语言特定的数据源类型如 IDataReader、ResultSet 等。/// /summarypublicinterfaceIEntityDataSource{/// summary/// 根据字段名获取当前行的字段值。/// /summaryobjectGetValue(stringfieldName);}}三、.NET 适配器EntityDataReaderAdapterusingSystem.Data;namespaceUserBaoTech.Foundation.ORM{/// summary/// .NET 数据源适配器将 IDataReader 适配为 IEntityDataSource。/// 把语言特定的类型IDataReader封装在适配器内部业务层完全不感知。/// /summarypublicclassEntityDataReaderAdapter:IEntityDataSource{privatereadonlyIDataReader_reader;publicEntityDataReaderAdapter(IDataReaderreader){_readerreader;}publicobjectGetValue(stringfieldName){return_reader[fieldName];}}}四、使用示例4.1 在MapEntityAccessBase.FillByPK中使用publicvirtualboolFillByPK(){// 构建 SQL 和参数...using(varreader_executor.ExecuteReader(sql,parameters)){if(reader.Read()){IEntityDataSourcesourcenewEntityDataReaderAdapter(reader);_entity.LoadFrom(source);returntrue;}}returnfalse;}4.2 在ProductService.GetProductList中使用using(varreader_executor.ExecuteReader(pagedSql,parameters)){IEntityDataSourcesourcenewEntityDataReaderAdapter(reader);while(reader.Read()){varproductnewProduct();product.LoadFrom(source);items.Add(product);}}4.3 业务层完全感知不到IDataReader// Product.LoadFrom 只依赖 IEntityDataSourcepublicoverridevoidLoadFrom(IEntityDataSourcesource){Idsource.GetValue(Id)?.ToString();Namesource.GetValue(Name)?.ToString();PriceConvert.ToDecimal(source.GetValue(Price));StockConvert.ToInt32(source.GetValue(Stock));CreatedAtConvert.ToDateTime(source.GetValue(CreatedAt));UpdatedAtConvert.ToDateTime(source.GetValue(UpdatedAt));IsDeletedConvert.ToBoolean(source.GetValue(IsDeleted));}五、迁移到其他语言时的对应适配器语言适配器类名适配的数据源类型C#EntityDataReaderAdapterIDataReaderJavaEntityResultSetAdapterResultSetArkTSEntityResultSetAdapter鸿蒙ResultSet六、设计要点接口是跨语言的IEntityDataSource不依赖任何 .NET 特有类型可直接移植到 Java/ArkTS适配器是语言特定的EntityDataReaderAdapter依赖IDataReader只在 .NET 端使用不影响跨语言迁移适配点集中在一处所有IDataReader→IEntityDataSource的转换都在适配器中完成上层代码无需改动业务层完全隔离Product、ProductAccess、ProductService只看到IEntityDataSource不感知IDataReader七、总结EntityDataReaderAdapter是用宝框架 ORM 模块中唯一一处依赖IDataReader的地方。迁移到 Java 时只需实现一个EntityResultSetAdapter适配ResultSet所有上层代码实体、Access、Service、Controller一字不改。这就是“适配集中化”的价值迁移代价降到最低。欢迎拷贝、转载无需授权反馈与交流欢迎在评论区留言或私信交流。如果你正在寻找一套不用 EF、不用 Dapper、可跨语言迁移的轻量级基架用宝框架或许是一个值得尝试的选择。用宝框架拥抱第一 · 一次书写 · 三端复用——不仅是用户的朋友而且是用户的宝贝

相关新闻

基于STM32单片机多路超声波测距测面积长度防撞无线WiFi/蓝牙APP设计DIY-T131

基于STM32单片机多路超声波测距测面积长度防撞无线WiFi/蓝牙APP设计DIY-T131

本系统由STM32F103C8T6单片机核心板、1.44寸TFT彩屏、(无线蓝牙/WIFI模块-可选)、4路超声波传感器、蜂鸣器电路、按键组成。【1】本系统4路超声波,分别测量,超声波到对应面的距离(比如到一面墙的距离)&…

2026/7/14 11:14:49阅读更多 →
Nomic-embed-text-v1.5边缘部署技术:量化优化与推理加速实践

Nomic-embed-text-v1.5边缘部署技术:量化优化与推理加速实践

Nomic-embed-text-v1.5边缘部署技术:量化优化与推理加速实践 【免费下载链接】nomic-embed-text-v1.5 项目地址: https://ai.gitcode.com/hf_mirrors/nomic-ai/nomic-embed-text-v1.5 在边缘计算和嵌入式AI应用场景中,如何在资源受限的设备上部署…

2026/7/14 11:14:49阅读更多 →
CC2674P10无线MCU调试、功耗分析与电源管理实战指南

CC2674P10无线MCU调试、功耗分析与电源管理实战指南

1. 项目概述:深入解析CC2674P10的调试、功耗分析与电源管理在嵌入式无线系统开发,尤其是对功耗极其敏感的物联网(IoT)设备设计中,开发者面临的挑战往往不止于功能的实现,更在于如何精确地洞察和优化系统的“…

2026/7/14 11:14:49阅读更多 →
TIGRE图像质量评估:7个关键指标提升重建效果

TIGRE图像质量评估:7个关键指标提升重建效果

TIGRE图像质量评估:7个关键指标提升重建效果 【免费下载链接】TIGRE TIGRE: Tomographic Iterative GPU-based Reconstruction Toolbox 项目地址: https://gitcode.com/gh_mirrors/ti/TIGRE TIGRE(Tomographic Iterative GPU-based Reconstructio…

2026/7/14 15:10:19阅读更多 →
完整免费的微信聊天记录永久保存方案:让珍贵对话永不丢失

完整免费的微信聊天记录永久保存方案:让珍贵对话永不丢失

完整免费的微信聊天记录永久保存方案:让珍贵对话永不丢失 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/We…

2026/7/14 15:10:19阅读更多 →
ComfyUI-LTXVideo技术深度解析:模块化AI视频生成架构设计与高效渲染方案

ComfyUI-LTXVideo技术深度解析:模块化AI视频生成架构设计与高效渲染方案

ComfyUI-LTXVideo技术深度解析:模块化AI视频生成架构设计与高效渲染方案 【免费下载链接】ComfyUI-LTXVideo LTX-Video Support for ComfyUI 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-LTXVideo 在当前AI视频生成技术快速发展的背景下&…

2026/7/14 15:10:19阅读更多 →
计算机毕业设计之基于Springboot技术的智能健身房管理系统的设计与实现

计算机毕业设计之基于Springboot技术的智能健身房管理系统的设计与实现

随着新经济的需求和新技术的发展,特别是网络技术的发展,如果可以建立起智能健身房管理系统,就可以改变传统线下管理方式。由于数据信息庞大、工作效率过低等等,导致传统的管理系统逐渐淡出人们的视野,所以实现一款不同…

2026/7/14 15:10:19阅读更多 →
Qwen2.5-0.5B-Instruct_rai_1.7.1_hybrid vs 同类模型:为什么这款AMD优化的混合模型值得关注?

Qwen2.5-0.5B-Instruct_rai_1.7.1_hybrid vs 同类模型:为什么这款AMD优化的混合模型值得关注?

Qwen2.5-0.5B-Instruct_rai_1.7.1_hybrid vs 同类模型:为什么这款AMD优化的混合模型值得关注? 【免费下载链接】Qwen2.5-0.5B-Instruct_rai_1.7.1_hybrid 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Qwen2.5-0.5B-Instruct_rai_1.7.1_hybrid …

2026/7/14 15:10:19阅读更多 →
从OpenMV到STM32:激光追踪系统中的视觉识别与PID控制实战解析

从OpenMV到STM32:激光追踪系统中的视觉识别与PID控制实战解析

1. 激光追踪系统概述激光追踪系统是电子设计竞赛中的经典题目,也是机器视觉与运动控制的完美结合。简单来说,这套系统需要让一个激光点能够自动追踪另一个移动的激光点,或者沿着预设的路径精确移动。听起来像是科幻电影里的场景,但…

2026/7/14 15:05:19阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/14 4:56:14阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/14 2:55:05阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/14 6:17:41阅读更多 →
【Cursor数据库安全红线】:自动执行SQL前必须校验的6项权限策略,金融级项目已强制落地

【Cursor数据库安全红线】:自动执行SQL前必须校验的6项权限策略,金融级项目已强制落地

更多请点击: https://intelliparadigm.com 第一章:Cursor数据库安全红线概览 Cursor 作为一款基于 AI 的智能编程助手,其本地数据库(SQLite 存储)承载着用户代码片段、会话历史、自定义规则及敏感上下文信息。理解其安…

2026/7/14 0:03:18阅读更多 →
【Notion AI写作避坑白皮书】:基于127份真实用户失败案例,总结6大致命误用陷阱

【Notion AI写作避坑白皮书】:基于127份真实用户失败案例,总结6大致命误用陷阱

更多请点击: https://codechina.net 第一章:Notion AI写作辅助的底层能力边界认知 Notion AI 并非通用大语言模型的直接封装,而是基于 Llama 系列与自研微调模型构建的轻量化推理服务,其输入上下文窗口严格限制在 8192 token&…

2026/7/14 0:03:18阅读更多 →
AI Agent数据越界行为如何被精准溯源?——基于GDPR/CCPA双合规的5层审计框架实战指南

AI Agent数据越界行为如何被精准溯源?——基于GDPR/CCPA双合规的5层审计框架实战指南

更多请点击: https://kaifayun.com 第一章:AI Agent数据越界行为的合规性挑战与溯源必要性 AI Agent在自主执行任务过程中,可能因提示注入、上下文污染或权限配置缺陷,无意或有意访问、缓存、传输受保护数据(如PII、G…

2026/7/14 0:03:18阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/14 15:07:30阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/14 4:45:36阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/14 2:42:17阅读更多 →