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

.NET 8 Blazor Web App切换身份验证至SQLite遇CS0103错误求助

解决.NET 8 Blazor Web App切换Identity到SQLite后的CS0103错误

问题根源

自动生成的ApplicationDbContextModelSnapshot.cs文件中残留了SQL Server专属的配置代码(比如SqlServerModelBuilderExtensions相关调用),而你已经卸载了SQL Server的EF Core包,导致这些代码找不到对应方法,触发CS0103错误。

解决步骤

1. 修正ModelSnapshot中的SQL Server专属代码

打开ApplicationDbContextModelSnapshot.cs,找到所有包含SqlServerModelBuilderExtensions的代码行,替换为SQLite兼容的配置:

  • 原SQL Server代码示例:
    b.Property(u => u.Id).UseIdentityColumns();
    
  • 替换为SQLite的自增列配置(使用SQLite EF Core扩展的单复数方法):
    b.Property(u => u.Id).UseIdentityColumn();
    
  • 或者使用EF Core通用自增配置(无需依赖数据库专属扩展):
    b.Property(u => u.Id).ValueGeneratedOnAdd();
    

同时,将SQL Server专属的列类型(如nvarchar(450))替换为SQLite支持的类型,比如TEXT或INTEGER。

2. 重新生成适配SQLite的迁移

打开终端或Package Manager Console,执行以下命令:

# 添加新的迁移(可自定义命名,比如SQLiteInit)
dotnet ef migrations add SQLiteInit
# 更新数据库,使配置生效
dotnet ef database update

这会自动生成适配SQLite的新ModelSnapshot文件,覆盖旧的SQL Server相关配置。

3. 验证DbContext和Identity配置

确认Program.cs中的DbContext配置已完全切换到SQLite:

builder.Services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlite(builder.Configuration.GetConnectionString("DefaultConnection")));

确保没有残留UseSqlServer()的调用,且Identity的配置未引用SQL Server专属选项。

4. 清理并重建项目

在开发工具中执行清理解决方案,再执行重建解决方案,清除编译缓存,确保所有依赖和代码变更生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:07:44