SuperAPI AI 工具集

sqlite-adonet

数据与分析

查看项目

更新于 10-15 21:12

技能介绍

用途:Microsoft.Data.Sqlite 是位于 src/Microsoft.Data.Sqlite.Core/ 的独立 ADO.NET 提供程序,不依赖 EF Core,实现 System.Data.Common 抽象。修改该目录文件时可参考以下实现细节。

实现要点:静态构造函数以反射方式调用 SQLitePCL.Batteries_V2.Init()。CreateFunction()/CreateAggregate() 的重载由 T4 模板(.tt 文件)生成。

命令生命周期:SqliteConnection 以弱引用跟踪关联命令。关闭打开的连接时,会在关闭本机连接前释放每个仍存活的被跟踪命令;命令释放会释放已准备的语句并注销该命令。诊断关闭/重新打开的问题应从此所有权路径和 System.Data.Common 契约入手,而非 EF Core 提供程序抽象。关闭不会清除命令的托管配置或连接引用;若在重新打开连接后复用同一命令对象,执行时会针对新句柄准备新的本机语句。仅当按此生命周期后报告的行为仍可复现时,才添加回归测试。

事务完成:COMMIT 失败可能让 SQLite 事务保持活动且可重试。不要调用 Complete() 或添加事务级重试;SqliteCommand 已通过连接的 ExecuteNonQuery 路径重试 busy/locked 结果。处置期间的回滚必须分离托管事务,即使回滚抛出异常,因此把 Complete() 保留在 finally 中。将失败的提交与失败的 Dispose()/DisposeAsync() 分开测试:保留原始异常,并验证处置后允许后续事务。

限制:资料仅覆盖上述实现细节,其他功能、平台、收费与价格暂未提供。