Repository navigation
SonnetDB 5.0:九模型 MCP 读写与精确的 .NET 数据访问
SonnetDB 5.0 将九种数据模型接入 MCP,并让 .NET 应用通过嵌入式 ADO.NET、REST 和 HTTP/2 Frame 使用同一套明确的数据语义。围绕 FreeSql、XCode、Chloe、SqlSugar 和 ABP 等项目提出的实际需求,这一版本完善关系事务、精确类型、名称绑定、元数据和常用批处理能力,并把共享协议与轻量远程客户端纳入正式包清单。
SonnetDB 使用 C# / .NET 10 实现。时间序列、关系表、文档、键值、对象、消息、搜索、向量和图共享引擎,各模型保留原生语义;核心引擎保持无第三方运行时依赖,服务端提供 NativeAOT 发布物。
升级提醒:这是主版本升级。 共享类型迁入 SonnetDB.Protocol,分页 API 使用 long;应用及 Provider 必须统一依赖并重新编译。涉及新目录能力时,旧引擎会明确拒绝打开;降级需要恢复升级前的停写备份。操作步骤见 5.0 迁移合同。
应用开发者得到什么
MCP 提供九模型的发现、读取与适用写入工具,覆盖 KV、对象存储桶、MQ、文档及全文检索、向量和图等访问路径。写入按调用者的实际数据库权限校验,只读凭据无法调用写工具;输入大小、分页与响应均设置预算。已有只读 SQL 入口继续执行只读合同。WorkBuddy 连接器提供安装、配置及可复现的联调入口,实际使用前应按工具和账号权限选择操作,MQ 的实例归属及备份边界单独说明。工具合同见 MCP 文档。
关系查询现在可以组合分组、HAVING、复合投影、排序与分页,ADO.NET 支持多语句、多结果及存储过程参数回写。INSERT RETURNING、UPSERT、原生 REPLACE、全表 UPDATE、持久序列、表列注释和结构化 schema 元数据服务于实际 ORM 接入;原生 REPLACE 保留删除再插入的触发器和外键语义。
关系事务覆盖多表读写、受支持的 DDL 提交与回滚、保存点、ReadCommitted 和显式 Serializable。锁定读支持受限 FOR UPDATE、NOWAIT 与 SKIP LOCKED;事务失败及远程提交结果未知的情况保留明确终态,调用方不应盲目重发写操作。
精确类型包括 DECIMAL、完整 UTC 100ns 的 DATETIME2 / DATETIMEOFFSET 及 DURATION。SQL 标识符保留原始拼写,未加引号按不区分大小写匹配,双引号精确匹配;元数据返回已保存的对象名称。会话 TEMP、CTAS 及连接会话隔离为受支持的批处理与临时工作表提供边界。
EF Core 默认 DateTime 使用原生 DATETIME2,参数与 SQL 字面量保留完整 UTC ticks,使审计、Identity 和 Passkey 等真实时钟写入能够保存亚毫秒值。已有 EF 数据库需要检查并执行标准日期列迁移;显式声明旧 DATETIME 的模型继续保留整毫秒合同,亚毫秒输入会被明确拒绝。原生非主键列演进也能在主键编码保持不变时保留自引用外键及现有数据。
5.0 还包含 nullable unique / EXISTS 的索引访问路径修复、关系外键一致性及持久化恢复回归。性能和容量结论仍需绑定具体硬件与负载,本次功能交付不附加未经验证的吞吐量数字。
十个 NuGet 包与部署入口
| 包 | 用途 |
|---|---|
SonnetDB.Core |
嵌入式多模型引擎 |
SonnetDB |
ADO.NET 访问入口 |
SonnetDB.Protocol |
独立共享协议、Frame 格式与编解码 |
SonnetDB.Client |
轻量原生 HTTP/2 Frame 客户端 |
SonnetDB.EntityFrameworkCore |
EF Core Provider |
SonnetDB.Caching.Distributed |
分布式缓存接口适配 |
SonnetDB.Caching.EasyCaching |
EasyCaching 适配 |
SonnetDB.CAP |
CAP 存储适配 |
SonnetDB.Cli |
命令行工具 |
SonnetDB.Testcontainers |
集成测试中的临时 Server 容器 |
Testcontainers 模块采用 SonnetDB.Testcontainers 包名,避免依赖其它项目的 NuGet 保留前缀;C# 的 using Testcontainers.SonnetDB; 和程序集名称保持可用。
dotnet add package SonnetDB --version 5.0.0
dotnet add package SonnetDB.EntityFrameworkCore --version 5.0.0
dotnet add package SonnetDB.Testcontainers --version 5.0.0GitHub Release 提供 Windows / Linux SDK、完整 Server bundle、安装器和适用连接器资产。容器使用 iotsharp/sonnetdb:5.0.0;部署前检查镜像 digest、数据卷、初始化配置与访问凭据。
docker pull iotsharp/sonnetdb:5.0.0发行资产、校验和与下载入口:GitHub v5.0.0。服务端部署与初始化见 快速开始和 Docker 镜像。
ORM 接入按实际版本验收
本次引擎能力对应 FreeSql、XCode、Chloe、SqlSugar 的实际需求,相关上游适配与 NuGet 发布分别推进。数据库实现、候选 Provider 测试、上游 PR 合并和用户可安装的公开包是不同的交付结果;安装前必须检查 Provider 的实际依赖版本,不能把引用 4.0 或旧预览的 Provider 当作已支持 5.0。
FreeSql 的接入主体已经合并,后续兼容修正见 #2291;XCode 接入见 #101,Chloe 见 #435,SqlSugar 见 #1457。正式依赖和消费者验收由 SonnetDB #230及各项目记录持续给出。
使用边界
关系列 VECTOR(N) / GEOPOINT、FOR SHARE、任意主键类型转换及 ORM 的所有私有方言不在本版支持范围。DATETIMEOFFSET 返回完整 UTC 时刻和零 offset;时序 measurement 的时间仍遵循现有毫秒合同,M50 的按库 ms/us/ns 规划尚未交付。
新的 SonnetDB.Client 交付共享协议和已实现的远程操作,不表示九模型 typed SDK 已经全部完成。EF Provider、Testcontainers 和其它扩展的 AOT 边界以各项目声明为准。单库备份不等于 Server 实例 MQ 恢复;进程强杀测试不等于物理掉电或介质损坏验收。
构建与包合同、干净机器安装、固定硬件容量、长期运行和生产部署分别验收。Workbench / Studio / VS Code 的预览与发布渠道也各有范围,不将其完整路线图作为本次已完成功能宣传。
项目源码:IoTSharp/SonnetDB。欢迎带上版本、传输方式、最小复现和错误终态提交反馈。