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

ASP.NET Core 6 MVC升级EF Core 7后无法连接SQLite求助

ASP.NET Core 6 MVC升级EF Core 7后SQLite连接失败问题

问题背景

为使用context.Database.SqlQuery<T>()功能,将ASP.NET Core 6 MVC项目从EF 6升级至EF Core 7,但执行EF查询或迁移命令时完全无法连接SQLite。

执行命令

C:\Path\To\My\Project\Ui>dotnet ef database update --context sqliteascertodbcontext
Build started...
Build succeeded.
  Debug: Registered integration with EF Core.

错误信息

使用服务器'C:\Path\To\My\Project\Ui\db.sqlite3'上的'main'数据库连接时出错。
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: ''。

at Microsoft.Data.Sqlite.SqliteConnection.LoadExtensionCore(String file, String proc)
at Microsoft.Data.Sqlite.SqliteConnection.Open()
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnection(Boolean errorsExpected)
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternal(Boolean errorsExpected)
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalar(RelationalCommandParameterObject parameterObject)
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
SQLite Error 1: ''。

项目包引用

<ItemGroup>
   <PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="6.0.11" />
   <PackageReference Include="Microsoft.Data.Sqlite.Core" Version="7.0.0" />
   <PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" Version="7.0.0" />
   <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Version="7.0.0" />
   <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="7.0.0" />
   <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.5" />
   <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.0" />
   <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.0" />
   <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="7.0.0" />
   <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.0">
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
       <PrivateAssets>all</PrivateAssets>
   </PackageReference>
   <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="7.0.0" />
   <PackageReference Include="Microsoft.Owin" Version="4.2.0" />
   <PackageReference Include="Microsoft.IdentityModel.Tokens" Version="6.17.0" />
   <PackageReference Include="Microsoft.Owin.Security" Version="4.2.0" />
   <PackageReference Include="Microsoft.Owin.Security.OAuth" Version="4.2.0" />
   <PackageReference Include="Microsoft.Owin.Security.Jwt" Version="4.2.0" />
   <PackageReference Include="Microsoft.Identity.Web" Version="1.23.1" />
   <PackageReference Include="Sentry.AspNetCore" Version="3.22.0" />
   <PackageReference Include="Microsoft.Azure.Services.AppAuthentication" Version="1.6.2" />
   <PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="2.1.3" />
   <PackageReference Include="VueCliMiddleware" Version="3.1.2" />
</ItemGroup>

问题排查与解决方案

1. 修复版本不一致问题

项目中Microsoft.EntityFrameworkCore.SqlServer版本为6.0.0,与其他EF Core 7.0.0版本包存在兼容性冲突,将其升级至7.0.0:

<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.0" />

2. 清理冗余依赖并匹配SQLite版本

  • Microsoft.EntityFrameworkCore.Sqlite已包含Microsoft.Data.Sqlite.Core和Microsoft.EntityFrameworkCore.Sqlite.Core的依赖,可移除这两个冗余引用。
  • SQLitePCLRaw.bundle_e_sqlite3版本2.1.3与EF Core 7.0.0不兼容,升级至2.1.4或更高版本:
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="2.1.4" />

3. 检查连接字符串配置

确保sqliteascertodbcontext对应的连接字符串格式正确,SQLite连接字符串示例:

"ConnectionStrings": {
  "sqliteascertodbcontext": "Data Source=C:\\Path\\To\\My\\Project\\Ui\\db.sqlite3"
}

也可使用相对路径简化配置:Data Source=./db.sqlite3,同时确认路径无权限或转义错误。

4. 验证文件与目录权限

  • 确认db.sqlite3所在目录具备读写权限,尤其是运行dotnet ef命令的用户账户。
  • 若文件不存在,EF Core迁移会自动创建,但需确保目录可写入。

5. 处理不兼容的代码生成包

Microsoft.VisualStudio.Web.CodeGeneration.Design版本3.1.5与ASP.NET Core 6不匹配,可升级至6.0.x版本,或根据需求移除该包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:15:34