You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级ServiceStack OrmLite至8.5.2时,.NET Framework4.8 SQLite测试项目遇重复键异常

ServiceStack OrmLite升级至8.5.2后SQLite连接异常(.NET Framework 4.8)

升级ServiceStack OrmLite从v6.9.0到8.5.2版本后,在目标框架为.NET Framework 4.8的SQLite测试项目中触发System.ArgumentException异常,具体堆栈信息如下:

System.ArgumentException
An entry with the same key already exists.
   at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
   at System.Collections.Generic.SortedList`2.Add(TKey key, TValue value)
   at System.Data.SQLite.SQLiteConnection.ParseConnectionString(SQLiteConnection connection, String connectionString, Boolean allowNameOnly)
   at System.Data.SQLite.SQLiteConnection.HasInMemoryDataSource(SQLiteConnection connection, String connectionString, Boolean parseViaFramework)
   at System.Data.SQLite.SQLiteConnection..ctor(String connectionString, Boolean parseViaFramework)
   at ServiceStack.OrmLite.Sqlite.SqliteOrmLiteDialectProvider.CreateConnection(String connectionString) in /home/runner/work/ServiceStack/ServiceStack/ServiceStack.OrmLite/src/ServiceStack.OrmLite.Sqlite/SqliteOrmLiteDialectProvider.cs:line 19
   at ServiceStack.OrmLite.Sqlite.SqliteOrmLiteDialectProviderBase.CreateConnection(String connectionString, Dictionary`2 options) in /home/runner/work/ServiceStack/ServiceStack/ServiceStack.OrmLite/src/ServiceStack.OrmLite.Sqlite/SqliteOrmLiteDialectProviderBase.cs:line 208
   at ServiceStack.OrmLite.OrmLiteConnection.get_DbConnection() in /home/runner/work/ServiceStack/ServiceStack/ServiceStack.OrmLite/src/ServiceStack.OrmLite/OrmLiteConnection.cs:line 40
   at ServiceStack.OrmLite.OrmLiteConnection.Open() in /home/runner/work/ServiceStack/ServiceStack/ServiceStack.OrmLite/src/ServiceStack.OrmLite/OrmLiteConnection.cs:line 119
   at ServiceStack.OrmLite.OrmLiteConnectionFactory.OpenDbConnection(String namedConnection) in /home/runner/work/ServiceStack/ServiceStack/ServiceStack.OrmLite/src/ServiceStack.OrmLite/OrmLiteConnectionFactory.cs:line 195
   at ChangeTracking.Test.HighJumpLocationOrderServiceTests..ctor() in D:\TFS\Integration\Change Tracking\Dev\ChangeTracking.Test\HighJumpLocationOrderServiceTests.cs:line 38

排查与解决建议

  • 检查SQLite连接字符串,确认是否存在重复的配置项(比如重复指定Data Source、Version等参数),重复键会导致SQLite解析连接字符串时抛出异常
  • 验证System.Data.SQLite版本兼容性:ServiceStack OrmLite 8.5.2可能依赖更高版本的SQLite驱动,若项目中引用的SQLite版本过低,可能出现解析逻辑冲突,尝试升级到OrmLite推荐的SQLite版本
  • 查看OrmLite连接字符串处理逻辑变化:新版本OrmLite可能会自动注入某些默认参数,导致与自定义连接字符串中的配置重复,可尝试简化连接字符串,只保留必要参数
  • 尝试启用连接字符串的框架解析模式:若OrmLite允许配置,可通过设置parseViaFramework=true,让.NET框架处理连接字符串解析,绕过SQLite自身的SortedList解析逻辑

内容的提问来源于stack exchange,提问作者Connor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 02:07:27